4

我正在用 C++ 为计算器扭动代码,但它使用程序集显示\读取结果,我想将值存储在任何寄存器中,例如(Al)到 C++ 中的变量 int ......我搜索了但我总是找到它用C语言...

4

3 回答 3

8

如果您想将值读alint

海合会:

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

但那是海湾合作委员会。

于 2013-11-11T13:58:57.493 回答
3

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

//Read value from register
int x;

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

参考这里

于 2013-11-10T21:04:34.847 回答
2

你的意思是:

int read_register_eax()
{
    int ret;
    asm { mov [ret],eax }
    return ret;
}
于 2013-11-11T11:57:49.407 回答