我無法編譯這個,我應該如何在Visual Studio中將[eax + 4]移動到y?在VS中移動[eax + 4]
float x, y, z;
__asm
{
mov x, eax
mov y, [eax+4]
mov z, [eax+8]
}
編輯: 「錯誤1錯誤C2424: '+':不當表達在 '第二個操作數'」
我無法編譯這個,我應該如何在Visual Studio中將[eax + 4]移動到y?在VS中移動[eax + 4]
float x, y, z;
__asm
{
mov x, eax
mov y, [eax+4]
mov z, [eax+8]
}
編輯: 「錯誤1錯誤C2424: '+':不當表達在 '第二個操作數'」
@Raymond是對的,你可以使用一個臨時寄存器來傳送它。確保你沒有銷燬一個使用過的寄存器。例如:
mov x, eax
push eax
push ebx
mov ebx, eax ; displacement is only possible with ebp or ebx
mov eax, [ebx+4]
mov y, eax
mov eax, [ebx+8]
mov z, eax
pop ebx
pop eax
MOV指令不能移動存儲器到存儲器。查看您最喜愛的彙編語言參考,瞭解每條指令規則的更多細節。如果某些東西沒有明確列出,則不允許。你不能只是補充東西。處理器非常挑剔。
[定義變量內C++內聯組件(http://stackoverflow.com/questions/1396265/defining-a-variable-inside-c-inline-assembly) – 2012-09-16 15:29:45
的可能重複的什麼你的意思是「無法編譯」?編譯器說什麼? – svick