在GCC x86内联汇编中使用地址常量时,可以使用如下方法:
int x = 10;
int y = 20;
__asm__("movl %1, %%eax; addl %2, %%eax"
: "=a" (x)
: "m" (x), "m" (y)
: "%eax");
在上面的代码中,x
和y
是符号常量,它们的地址被作为内联汇编的输入输出操作数。
int x = 10;
int y = 20;
__asm__("movl %1, %%eax; addl %2, %%eax"
: "=a" (x)
: "m" (*(int*)&x), "m" (*(int*)&y)
: "%eax");
在上面的代码中,x
和y
的地址被作为内存操作数传递给内联汇编。
int x = 10;
int y = 20;
__asm__("movl %1, %%eax; addl %2, %%eax"
: "=a" (x)
: "r" (&x), "r" (&y)
: "%eax");
在上面的代码中,x
和y
的地址被作为寄存器操作数传递给内联汇编。
总之,在GCC x86内联汇编中使用地址常量时,可以使用符号常量、内存操作数或寄存器操作数来表示。
领取专属 10元无门槛券
手把手带您无忧上云