组装以下程序时:
[BITS 32] mov eax, 0x1234
nasm -f bin in.asm -o out.bin
我得到以下二进制输出:
B8 34 12 00 00
B8 34 12 00 00 就像它是一个64位的值一样。
B8 34 12
00 00
我不知道这是否是NASM特有的问题,因为我还没有尝试过其他汇编程序。
你很困惑。您有4个字节。4字节是32位。不是64位。这将是8个字节。
一对十六进制数字是一个字节,这就是为什么反汇编输出将事物分组为十六进制数字对。
作为反例,
[BITS 64] mov rax, 0xCAFEBABEDEADBEEF
0000000 b848 beef dead babe cafe 000000a