Borland C具有伪寄存器_AX,_BX,_FLAGS等,可用于'C'代码以将寄存器保存为临时变量。MSVC中的伪寄存器
是否有任何MSVC等效?我试过@AX,@BX等,但是编译器(MSVC1.5)给出错误('40'无法识别的符号)。
我正在开发一个16位预启动应用程序,无法使用。 谢谢。
Borland C具有伪寄存器_AX,_BX,_FLAGS等,可用于'C'代码以将寄存器保存为临时变量。MSVC中的伪寄存器
是否有任何MSVC等效?我试过@AX,@BX等,但是编译器(MSVC1.5)给出错误('40'无法识别的符号)。
我正在开发一个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
}
如果您不知道......当使用内联汇编时,1.x版本的MSC非常古怪。如果您看到奇怪的错误,请查看编译器的汇编输出。内联汇编中的某些内容将禁用整个C/CPP文件中的代码的优化器。 – JimR