【发布时间】:2014-03-05 20:10:10
【问题描述】:
我的第一个问题是
-
在调整堆栈空间时,为什么选择数字 8?我假设它意味着 8 个字节,但它是如何确定需要 8 个字节来调整的?我知道我们应该为所有参数分配足够的空间(在这种情况下,一个参数),我也在猜测返回地址,但我们怎么知道每个参数需要多少字节?
李> 我正在尝试通读代码以了解发生了什么,但我感到困惑
beq $t0, $zero, L1。
我知道从这里我们分支到它所说的 L1,其中 n 减 1,但后来我很困惑。有没有
日本事实
的意思是我们立即返回到它在顶部说事实的地方,但这次的参数是 n = 1 而不是 n = 2? [假设 n = 2 是我们最初的论点] 在什么时候我们到达了它所说的将 $a0 和 $v0 相乘的代码?
老实说,我真的很难将我的大脑包裹在这一切上。如果我理解的话,每次调用阶乘函数时,都会在堆栈中添加一个新的“堆栈帧”......每个帧分配 8 个字节到堆栈中?每个新框架都包含一个返回地址以返回调用它的过程。如果我理解正确,我很难在代码中看到它。
【问题讨论】:
-
在这里放文字,而不是超大的图片怎么样?