PUSH

作者:Vesper Vei
1 分钟阅读

目录

  1. PUSH(push)
    1. 基本作用
    2. 指令执行过程
    3. 指令格式
    4. 行为特性
    5. 等效展开示例
    6. ASCII 栈变化示意
    7. 常见用途

PUSH(push)

基本作用

PUSH 指令将一个操作数压入栈中,并更新栈顶指针。
栈在 x86/x64 中向低地址增长,因此 PUSH 会减少 ESP/RSP 的数值,再把数据写入新栈顶。

指令执行过程

以 64 位为例:

rsp = rsp - 8
[rsp] = 操作数

32 位为:

esp = esp - 4
[esp] = 操作数

指令格式

允许以下操作数:

立即数 push 的符号扩展是 PUSH 的一个独特行为。

行为特性

等效展开示例

push rax
; 等价于
sub rsp, 8
mov [rsp], rax
push 0x1234
sub rsp, 8
mov qword ptr [rsp], 0x0000000000001234

ASCII 栈变化示意

执行前:

rsp → +------------------+
| (旧栈数据) |
+------------------+

执行 push rax 后:

+------------------+
rsp → | rax 的值 |
+------------------+
| (旧栈数据) |

image.png

常见用途



关系图谱

Loading graph...