2012-06-05 51 views
0

Borland C具有僞寄存器_AX,_BX,_FLAGS等,可用於'C'代碼以將寄存器保存爲臨時變量。MSVC中的僞寄存器

是否有任何MSVC等效?我試過@AX,@BX等,但是編譯器(MSVC1.5)給出錯誤('40'無法識別的符號)。

我正在開發一個16位預啓動應用程序,無法使用。 謝謝。

+0

如果您不知道......當使用內聯彙編時,1.x版本的MSC非常古怪。如果您看到奇怪的錯誤,請查看編譯器的彙編輸出。內聯彙編中的某些內容將禁用整個C/CPP文件中的代碼的優化器。 – JimR

回答

1

如果您只是在寄存器和變量之間移動值,則不需要僞寄存器。例如:

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 

編輯:這些標誌複製到一個變量,並回到標誌再次,你可以使用LAHFSAHF說明。例如:

int flags = 0; 
__asm 
{ 
    lahf; 
    mov flags, eax; 
} 
flags |= (1 << 3); 
__asm 
{ 
    mov eax, flags; 
    sahf; 
    // 4th bit of the flag is set 
} 
+0

謝謝。什麼是_FLAGS的MSVC等價物? – sawdust

+0

太棒了!非常感謝。 – sawdust