x86 指令,通过堆栈指针解释

问题描述 投票:0回答:1

以下说明:

0xffffd096    push eax
0xffffd097    push 0x41414141
Oxffffd09c    push 0x42424242 

影响堆栈如下:

0xffffd024|+0x0000    "BBBBAAAA"    <- esp
0xffffd028|+0x0004    "AAAA" 
0xffffd02c|+0x0008    Ox00000000

为什么堆栈指针会自动引用两个连续的

push imm \x68
操作码进行合并,与之前的
push eax \x50
操作码不同?

x86 stack opcode
1个回答
0
投票

我认为你误读了输出。

您有八个字节(“BBBBAAAA”),从 0xffffd024|+0x0000 开始。

您有四个字节(“AAAA”),从 0xffffd028|+0x0004 开始。

两个“AAAA”是一样的。

(您使用的工具可能会打印从起始位置到找到 0x00 的所有内容,就好像它们是 C 字符串一样。)

从栈顶(低地址)到栈底:

0xffffd024|+0x0000    "BBBB" (four bytes, 0x42424242)
0xffffd028|+0x0004    "AAAA" (four bytes, 0x41414141)
0xffffd02c|+0x0008    Ox00000000 (four bytes, the content of eax)
© www.soinside.com 2019 - 2024. All rights reserved.