Assembly constraints - offset?

Avi Kivity
Wed Sep 27 10:43:00 GMT 2006

I'd like to access several members of a structure from inline assembly 

asm ( "mov $1, %[member1](%[base]) \n\t"
          "mov $2, %[member2](%[base]) \n\t"
          : : [base]"r"(ptr),
              [member1]"i"(offsetof(struct the_struct, member1)),
              [member2]"i"(offsetof(struct the_struct, member2)));

However, the "i" constraint generates an immediate marker ('$'), so I get

    mov $1, $4(%ecx)
    mov $2, $8(%ecx)

The second '$' is a bit unhelpful.

Is there any constraint which will emit the offset without the '$'?

Thanks in advance.

error compiling committee.c: too many arguments to function

More information about the Gcc-help mailing list