当我将%esp移至%ebp时会发生什么?

法国

我知道这是一个非常基本的问题,但是在这里:

我开始学习汇编程序,并且试图了解堆栈的工作原理。

首先,当我将值传递给汇编器函数时,我将像这样访问它:

movl 4(%esp),%eax  # first parameter
movl 8(%esp),%ebx  # second parameter

但是后来我被告知最好这样做:

push %ebp
movl %esp,%ebp
# and then I'd access the values on %ebp:
movl 8(%ebp),%eax
movl 12(%ebp),%eax
pop %ebp

好的,这有什么区别?当我直接从%esp访问值时,它们不是已经在堆栈中吗?使用push再次执行操作有什么好处?

有没有人为一个好的学习工具(傻瓜型)提供有关如何学习堆栈如何工作的技巧,以便人们可以学习这些堆栈指针,返回地址等等?我还没有找到任何有关其工作原理的良好视觉演示。谢谢!

活泼的

区别和原因都与堆栈帧有关。以下链接有一个不错的摘要(如果我自己说的话)。

组装中的堆叠框架是什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我将null转换为另一个类时会发生什么

来自分类Dev

当我将鼠标悬停在Chrome中的链接上时会发生什么?

来自分类Dev

当我将分区标记为活动分区时会发生什么?

来自分类Dev

当我们将参数传递给System.out.println()时会发生什么?

来自分类Dev

当我们将jar提交给风暴集群时会发生什么情况?

来自分类Dev

当我们将char转换为大于256的数字时会发生什么?

来自分类Dev

当我使用多个模拟时间时会发生什么?

来自分类Dev

当我绑定到AliasProperty时会发生什么?

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

MySql-当我用“ and”更新时会发生什么

来自分类Dev

当我多次调用requestAnimationFrame时会发生什么

来自分类Dev

当我放弃对iOS 6的支持时会发生什么?

来自分类Dev

当我截断正在使用的文件时会发生什么?

来自分类Dev

当我不输入期望的命令时会发生什么?

来自分类Dev

当我忘记登录TTY时会发生什么?

来自分类Dev

当我使用多个模拟时间时会发生什么?

来自分类Dev

当我调用“ BufferStrategy.show()”时会发生什么?

来自分类Dev

当我取消订阅 Observable 链时会发生什么?

来自分类Dev

当我们将移动设备的水平方向变为垂直方向时会发生什么?

来自分类Dev

当我将变量'x'更改为'fab'时会发生什么?关于装饰器并传递函数变量

来自分类Dev

当我将0作为getline的第二个参数传递时会发生什么?

来自分类Dev

当我将标志“-std=c99”添加到 minwg32 时会发生什么?

来自分类Dev

当我将 System.Threading.Timer 与 TimerTrigger 一起使用时会发生什么?

来自分类Dev

将应用程序移至SD卡时会发生什么

来自分类Dev

当我从RAM运行持久性存储实时USB时会发生什么情况?

来自分类Dev

就system_read中断,汇编而言,当我按Enter键时会发生什么?

来自分类Dev

当我包装两次I / O流时会发生什么?

来自分类Dev

当我们在Android Studio中添加DEPENDENCY时会发生什么

Related 相关文章

  1. 1

    当我将null转换为另一个类时会发生什么

  2. 2

    当我将鼠标悬停在Chrome中的链接上时会发生什么?

  3. 3

    当我将分区标记为活动分区时会发生什么?

  4. 4

    当我们将参数传递给System.out.println()时会发生什么?

  5. 5

    当我们将jar提交给风暴集群时会发生什么情况?

  6. 6

    当我们将char转换为大于256的数字时会发生什么?

  7. 7

    当我使用多个模拟时间时会发生什么?

  8. 8

    当我绑定到AliasProperty时会发生什么?

  9. 9

    当我调用“ BufferStrategy.show()”时会发生什么?

  10. 10

    当我放弃对iOS 6的支持时会发生什么?

  11. 11

    MySql-当我用“ and”更新时会发生什么

  12. 12

    当我多次调用requestAnimationFrame时会发生什么

  13. 13

    当我放弃对iOS 6的支持时会发生什么?

  14. 14

    当我截断正在使用的文件时会发生什么?

  15. 15

    当我不输入期望的命令时会发生什么?

  16. 16

    当我忘记登录TTY时会发生什么?

  17. 17

    当我使用多个模拟时间时会发生什么?

  18. 18

    当我调用“ BufferStrategy.show()”时会发生什么?

  19. 19

    当我取消订阅 Observable 链时会发生什么?

  20. 20

    当我们将移动设备的水平方向变为垂直方向时会发生什么?

  21. 21

    当我将变量'x'更改为'fab'时会发生什么?关于装饰器并传递函数变量

  22. 22

    当我将0作为getline的第二个参数传递时会发生什么?

  23. 23

    当我将标志“-std=c99”添加到 minwg32 时会发生什么?

  24. 24

    当我将 System.Threading.Timer 与 TimerTrigger 一起使用时会发生什么?

  25. 25

    将应用程序移至SD卡时会发生什么

  26. 26

    当我从RAM运行持久性存储实时USB时会发生什么情况?

  27. 27

    就system_read中断,汇编而言,当我按Enter键时会发生什么?

  28. 28

    当我包装两次I / O流时会发生什么?

  29. 29

    当我们在Android Studio中添加DEPENDENCY时会发生什么

热门标签

归档