如何使用C++从寄存器读取值



我正在用计算器的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;
}

最新更新