小编asm*_*dan的帖子

使用一个asm命令将寄存器值读取到变量

如何使用一个内联汇编程序命令将寄存器值读取到变量?我在旧的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));
Run Code Online (Sandbox Code Playgroud)

结果我得到了这个:

mov    %eax,%eax
mov    %eax,0x1944b8
mov    0x1944b8,%eax
mov    %ebx,%eax
mov    %eax,0x1944bc
mov    0x1944bc,%eax
Run Code Online (Sandbox Code Playgroud)

但我只需要:

mov    %eax,0x1944b8
mov    %ebx,0x1944bc
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到这个效果?

c assembly gcc inline-assembly

5
推荐指数
1
解决办法
3488
查看次数

标签 统计

assembly ×1

c ×1

gcc ×1

inline-assembly ×1