【问题标题】:Push a local variable onto the stack将局部变量压入堆栈
【发布时间】:2015-01-03 22:49:09
【问题描述】:

最近我一直在做很多汇编编程来提高我的技能,我开始意识到可以像这样pushl 8(%esp) 将局部变量推送到堆栈上但是,我对此感到困惑,因为它似乎不是按以下顺序进行操作:

decrement stack pointer -> fetch value 8(%esp) -> put on stack,它似乎改为这样做

fetch value 8(%esp) -> decrement stack pointer -> put on stack,有人能遵守吗,因为我不希望我未来的努力建立在错误的假设之上 这是在 gcc 编译器上完成的! 谢谢!!

【问题讨论】:

  • 这是我上网的一个长期令人困惑的程序,这种行为对我来说似乎很奇怪,因为在执行pushl %eax esp 之类的操作时,首先会递减值,然后再推送值。这导致人们相信它遵循我提到的第一个行为。你想让我发布整个代码吗?
  • 我通过pushl 8(%esp) 来做到这一点,正如我所提到的,如果首先减少 esp,那么将被推送的值将是垃圾(因为我想要的变量在 8(%esp) 中)但是如果先获取值,则将推送变量

标签: pointers assembly stack push


【解决方案1】:

假设这是 x86 代码,是的,它获取值,递减堆栈指针,然后将值放在堆栈顶部。参考here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多