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