specifier on operand in asm inline

dofg dofg@ya.ru
Fri Oct 12 21:23:00 GMT 2007


Ian Lance Taylor <iant@google.com> wrote:
> mp <dofg@ya.ru> writes:
> 
> > Ian Lance Taylor <iant@.com> wrote:
> > > Mihail Platonov <dofg@.ru> writes:
> > > 
> > > > what is the semantics of "r" specifier in subx operand (%r2)?
> > > > and what is the meaning of connection between this specifier
> > > > and "J" constraint?
> > > >     __asm__ __volatile__ (
> > > > ...
> > > >             "subx %r2,%3,%%g1\n\t"
> > > >            : "=&r" ((USItype)(r1)),
> > > >              "=&r" ((USItype)(r0))
> > > >            : "%rJ" ((USItype)(x3)),
> > > >              "rI" ((USItype)(y3)),
> > > > ...
> > > 
> > > The 'r' constraint means that that operand must be a general
> > > register. The 'J' constraint means that it must be the integer
> > > zero.  Using both rJ and together means that the operand must be
> > > either a general register or the integer zero.
> > thanx for answer anyway, but it is the description of constraints.
> > i'm trying to find out info about ...
> > subx op1, op2, op3
> > ... about op1. why 'r' is there and so on.
> 
> That is the question I tried to answer.  So I don't know what you are
> asking.  What type of answer are you looking for?
you gave the description of the constraints
: "=&r" ((USItype)(r1)),
  "=&r" ((USItype)(r0))
: "%rJ" ((USItype)(x3)),
  "rI" ((USItype)(y3)),
i am pointing to
"subx %r2,%3,%%g1\n\t"
more definitely, to %r2. operand of subx. 'r' here is also a
constraint, telling compiler to use register?

> 
> Ian

mp



More information about the Gcc-help mailing list