我不明白为什么代码的输出是Ole。小字节序不应该影响推送命令吗?
global _start
section .data
x: dd 3
section .text
_start:
mov eax, 4
mov ebx, 1
mov dword[x], 0x0a656c4f
push dword[x]
mov ecx, esp
mov edx, 4
int 0x80
mov eax,1
mov ebx, 0
int 0x80
如果我在mov dword[x], 0x0a656c4f之后得到它,那么内存布局是:
0a (higher)
65
6c
4f (lower)
因为 x86 的字节顺序很小,并且 x 指向值为4f的字节。在push dword[x]之后,有相同的堆栈图片(随着它向下增长而反转),其中esp指向0a
同样的问题与代码相关时
mov dword[x], 0x0a656c4f
push dword[x]
替换为:
push dword 0x0a656c4f
谢谢。