我是一个新手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