gdb - leave 和 ret 和有什么不一样

标签 gdb elf

我正在尝试反汇编一个包含简单功能的简单程序。这个程序是用 gcc 编译的,用于 32 位 x86 目标。
该函数通过调用指令调用。
在函数的最后,我看到一个ret指令,这是正常的,但也有一个leave指令。程序的任何地方都没有输入指令。
我想知道这个休假功能是什么....

最佳答案

离开:
离开堆栈区。
离开这是反向进入。因此,通过 Enter 堆栈区域的 resevierte 被释放。

退订:
从程序返回。
Ret 终止执行一个过程并将控制流转移到调用程序。 Ret 有一个可选的字操作数。这表示在返回地址从堆栈中取出后要在堆栈上删除的字节数。

关于gdb - leave 和 ret 和有什么不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030356/

相关文章:

c++ - 在 GDB 中运行应用程序直到发生异常

c - 如何在 GDB 中为 open(2) 系统调用返回 -1 设置断点

c++ - GDB 问题 : Pretty-Printing a 2D Array?

c - 在 C 中读取 ELF 头文件

c++ - 追踪程序流产的工具

c - 如何获取结构成员的地址信息?

linux - 系统调用在调用_exit时返回07

c - Libelf 会创建损坏的输出文件,即使什么都不做

linux - 定位和编辑加载程序的动态符号表?

linux - elf-loader如何知道stderr和stdout的地址