コードの出力が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
ありがとう。