相关疑难解决方法(0)

为什么在x86程序集中执行"mov esp,ebp"?

据说该leave指令与以下内容相同:

mov esp,ebp
pop ebp
Run Code Online (Sandbox Code Playgroud)

但这是mov esp,ebp为了什么?这对我来说似乎没有用......

x86 assembly

62
推荐指数
1
解决办法
4万
查看次数

什么是ESP和EBP寄存器?

我发现ESP寄存器是当前的堆栈指针,而EBP是当前堆栈帧的基本指针.但是,我不明白这些定义(我刚开始学习如何在汇编程序中编写代码).

据我所知,ESP指向堆栈本身,EBP指向堆栈顶部的任何东西.但这些只是我的猜测而且很可能是不正确的.否则,如下所述的声明是什么意思?

MOV EBP, ESP    
Run Code Online (Sandbox Code Playgroud)

编辑:我认为上面的陈述是我书的错字.我认为它应该是EBX而不是EBP

x86 assembly callstack stack-frame

33
推荐指数
4
解决办法
5万
查看次数

需要对汇编语言中的LEAVE指令进行一些解释

我没有清楚地理解LEAVE函数,它是这两条指令的缩写:

MOV ESP, EBP
POP EBP
Run Code Online (Sandbox Code Playgroud)

因此MOV ESP, EBP将ESP向下移动到EBP(堆栈的开始)的水平.

然后POP EBP,移动ESP指向的值并将其影响到EBP,并将ESP向下移动一步.

但我真的没有看到,这两个操作如何与离开函数的事实相关联(这是目的LEAVE).

你能帮我澄清一下吗?

x86 assembly

2
推荐指数
1
解决办法
1290
查看次数

标签 统计

assembly ×3

x86 ×3

callstack ×1

stack-frame ×1