gpt4 book ai didi

assembly - ESP和EIP寄存器有什么区别

转载 作者:行者123 更新时间:2023-12-03 22:45:12 27 4
gpt4 key购买 nike

使用以下示例,ESP 和 EIP 寄存器之间有什么区别?解释代码在做什么。

main PROC 
0000 0020 call MySub
0000 0025 mov eax, ebx
.
.
main ENDP

MySub PROC
0000 0040 mov eax, edx
.
.
ret
MySub ENDP

0000 0025 是立即指令的偏移量
遵循 CALL 指令

0000 0040 是里面第一条指令的偏移量
我的子

CALL 指令将 0000 0025 压入堆栈,并且
将 0000 0040 加载到 EIP
|-------------|              |----------|
| 0000 0025 |<--ESP | 0000 0040| EIP
|-------------| |----------|
| |
|-------------|
| |
|-------------|

RET 指令从堆栈中弹出 0000 0025 到 EIP
(RET 执行前的堆栈显示)
|-------------|              |----------|
| 0000 0025 |<--ESP | 0000 0025| EIP
|-------------| |----------|
| |
|-------------|
| |
|-------------|

最佳答案

EIP 是指令指针。它指向(保存地址)下一条要执行的指令的第一个字节。

ESP 是堆栈指针。它指向(保存地址)堆栈上最近推送的值。

这些是常见的架构寄存器。这段代码只是演示了函数调用/返回序列是如何工作的。

关于assembly - ESP和EIP寄存器有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com