我正在使用位于單獨的 .ASM 檔案中的匯編代碼構建一個 KMDF 設備驅動程式(64 位)專案。我正在使用 Visual Studio 2019 社區中集成的 MASM (ml64.exe) 編譯器將 .ASM 構建到目標檔案中并鏈接到 64 位專案。我正在嘗試以下代碼,它將 imm64 值推送到堆疊上。我收到以下錯誤。我怎樣才能做到這一點?
PUSH FFFF0820CADBA78D //
上面的指令給了我以下錯誤
Error A2006 undefined symbol : FFFF0820CADBA78Dh
uj5u.com熱心網友回復:
回想一下,數字必須以 MASM 語法中的數字開頭(有關詳細資訊,請參閱 MASM 手冊),并且必須以 為后綴h,表示十六進制數字。所以正確的語法是
PUSH 0FFFF0820CADBA78Dh
那么請注意PUSH imm64amd64上沒有指令。只能將 32 位常量符號擴展為 64 位。所以這不會組裝。相反,首先將常量加載到暫存器中,然后將其推送。
MOV RAX, 0FFFF0820CADBA78Dh
PUSH RAX
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498472.html
下一篇:如何撰寫行內匯編來進行位旋轉
