【发布时间】:2011-06-29 17:43:02
【问题描述】:
如何使用一个内联汇编程序命令将寄存器值读取到变量中? 我在旧的 freeBSD 系统 (v2.1 i386) 上使用 gcc。
我有这样的代码:
static volatile unsigned long r_eax, r_ebx;
asm ("movl %%eax, %0\n" :"=r"(r_eax));
asm ("movl %%ebx, %0\n" :"=r"(r_ebx));
结果我得到了这个:
mov %eax,%eax
mov %eax,0x1944b8
mov 0x1944b8,%eax
mov %ebx,%eax
mov %eax,0x1944bc
mov 0x1944bc,%eax
但我只需要:
mov %eax,0x1944b8
mov %ebx,0x1944bc
我怎样才能达到这个结果?
【问题讨论】:
标签: c gcc assembly inline-assembly