1
我对我的计算机体系结构教科书中的这个示例程序感到困惑。Y86总和程序混淆
这里的C代码...
而这里的生成Y86代码...
我的问题是与0x046
mrmovl 8(%ebp), %ecx
为什么它设置开始到堆栈指针前面的8个字节?我认为我对所有事情都很困惑。就像堆栈正在查看0x100一样,为什么%ecx被设置为8个字节,然后当Count已经被设置为远离%ebp12个字节时增加4?我对堆栈指针所看到的东西的理解可能是错误的。
哦,我想我明白了,因为* Start是第三个被推入堆栈的东西,所以我们需要移过最新的和第二个最新的东西(每个4个字节)以开始*开始字节。 *起始字节包含数组的地址,_that_正在增加4.另外一件事,在程序结束时,他们将堆栈设置为.pos 100.因此,假设您将4个字节推送到堆栈,在地址100-103或0FD - 100? – Weston 2014-10-05 07:34:54