Borland C 具有伪寄存器 _AX、_BX、_FLAGS 等,可在“C”代码中用于将寄存器保存到临时变量。
是否有任何 MSVC 等价物?我尝试了@AX、@BX 等,但是编译器(MSVC1.5)给出了错误('40' unrecognized symbol)。
我正在开发一个 16 位预启动应用程序,但无法使用 . 谢谢。
Borland C 具有伪寄存器 _AX、_BX、_FLAGS 等,可在“C”代码中用于将寄存器保存到临时变量。
是否有任何 MSVC 等价物?我尝试了@AX、@BX 等,但是编译器(MSVC1.5)给出了错误('40' unrecognized symbol)。
我正在开发一个 16 位预启动应用程序,但无法使用 . 谢谢。
如果只在寄存器和变量之间移动值,则不需要伪寄存器。例子:
int a = 4;
int b = 999;
__asm
{
mov eax, a; // eax equals to 4
mov b, eax; // b equals to eax
}
// b equals to 4 now
编辑:要将标志复制到变量中并再次返回标志,您可以使用LAHF
和SAHF
说明。例子:
int flags = 0;
__asm
{
lahf;
mov flags, eax;
}
flags |= (1 << 3);
__asm
{
mov eax, flags;
sahf;
// 4th bit of the flag is set
}