我对我的计算机架构教科书中的示例程序感到困惑。
这是C代码..。

这是生成的Y86代码..。

我的问题是0x046
mrmovl 8(%ebp), %ecx为什么它在堆栈指针前面设置为8个字节?我想我对所有的东西都很困惑。就像堆栈正在查看0x100一样,为什么要将%ecx设置为离那里8字节,然后在计数已经从%ebp设置为12字节时增加4?我对堆栈指针究竟在看什么的理解可能是错误的。
发布于 2014-10-05 07:07:48
代码按以下顺序将事情推到堆栈上:
Count (4)Start (array)%eip (由call隐式推动);%ebp。然后,代码将%ebp设置为%esp,堆栈如下所示:

(您主要对标记为%EBP及以上的部分感兴趣。)
希望这能澄清问题。您可以阅读更多的这里。
https://stackoverflow.com/questions/26200279
复制相似问题