我是一個新手NASM,我想編譯這個小片段爲32位和64位代碼:NASM和DISASM問題與32/64位
pop bx
ret
獲得組裝0x5b 0xc3與「NASM。 exe文件asm.asm「。這應該是32位代碼(默認爲nasm),但是「ndisasm.exe asm -b 32」錯誤地將其反彙編爲pop ebx和ret。
但
bits 64
pop bx
ret
被組裝到0x66 0x5b 0xc3與 「nasm.exe asm.asm」 和 「ndisasm.exe ASM -b 64」 正確地拆卸本流行BX和RET。
我在哪裏出錯?我很困惑現在
謝謝你的工作,我將獎勵點給你,因爲你花時間在這個答案。順便說一句,我的答案也解決了我的問題。 –
感謝您接受我的回答。我看到了你的答案,但因爲它不是全部真相(因爲通常是組裝一些對象格式,而不是一個平面二進制文件),我也一直在想自己的NASM輸出的16/32/64比特問題,我想更完整的解釋也可能對其他人有幫助。 – nrz