Structure members in asm using one register only

Falk Hueffner
Fri May 6 23:09:00 GMT 2005

Maurizio Monge <> writes:

> Hi, i am trying to make gcc access the members of a class
> using only one register (for the class address).
> If i do:
> [member1] "m" (this->member1),
> [member2] "m" (this->member2),
> etc.
> gcc will put the address of this->member1 in one register,
> address of this->member2 in another one, etc...
> i know that i can do
> [thiz]  "r" (this)
> and access the members as xyz([this]) with the right xyz,

gcc already does this automatically:

falk@juist:/tmp% cat test.c                               
struct s { int a, b; };
void f(struct s *s) {
    asm("frob %0 %1" : :"m"(s->a), "m"(s->b));
falk@juist:/tmp% gcc -O3 -S test.c && grep frob test.s 
        frob 0($16) 4($16)


More information about the Gcc-help mailing list