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

时间:2013-11-10 20:51:48

标签: c++ assembly inline-assembly

我用C ++扭曲代码用于计算器,但它显示\ read结果与汇编,我想将值存储在任何寄存器中,例如(Al)到C ++中的变量int ...我搜索了但是我总是用C语言找到它......

3 个答案:

答案 0 :(得分:4)

如果您想将al中的值读入int

GCC

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");

但那是海湾合作委员会。

答案 1 :(得分:2)

它依赖于编译器。对于有GCC的英特尔:

//Read value from register
int x;

asm ("mov %0, AI;"
     :"=r"(x)
    );

参考here

答案 2 :(得分:0)

你的意思是:

int read_register_eax()
{
    int ret;
    asm { mov [ret],eax }
    return ret;
}