我正在用计算器的C++扭曲代码,但它通过汇编显示\读取结果,我想将值存储在任何寄存器中,例如( Al )到C++中的变量 int...我搜索了,但我总是用C语言找到它......
如果要将al
中的值读取到int
:
海湾合作委员会:
unsigned char out;
asm volatile("movb %%al, %[Var]" : [Var] "=r" (out));
或
unsigned char out;
asm volatile("movb %%al, %0" : "=r" (out));
对于 MSVC:
unsigned char c;
__asm movb c, al
没有官方的C++方式,它源于C。
编辑
您可能还需要:
register unsigned char out asm("%al");
但那是海湾合作委员会。
它依赖于编译器。对于使用 GCC 的英特尔:
//Read value from register
int x;
asm ("mov %0, AI;"
:"=r"(x)
);
参考这里
你的意思是:
int read_register_eax()
{
int ret;
asm { mov [ret],eax }
return ret;
}