Y86 Sum计划混乱

时间:2014-10-05 06:41:25

标签: c assembly architecture x86 y86

我对计算机体系结构教科书中的这个示例程序感到困惑。

这是C代码......

enter image description here

这是生成的Y86代码......

enter image description here

我的问题是0x046

mrmovl 8(%ebp), %ecx

为什么在堆栈指针前面设置Start到8个字节呢?我想我一切都很困惑。就像堆栈正在查看0x100一样,为什么%ecx被设置为远离那里8个字节,然后当Count已经设置为距离%ebp 12个字节时增加4?我对堆栈指针究竟是什么的理解可能是错误的。

1 个答案:

答案 0 :(得分:1)

代码按以下顺序将事物压入堆栈:

  • Count4
  • Startarray
  • 返回%eip(由call隐式推送);
  • %ebp

然后代码将%ebp设置为%esp,堆栈如下所示:

stack layout

(您主要对标有%EBP及以上的部分感兴趣。)

希望这能澄清事情。您可以阅读更多here