C 有人能和我一起看一下这个MIPS代码吗?
我的第一个问题是C 有人能和我一起看一下这个MIPS代码吗?,c,assembly,mips,C,Assembly,Mips,我的第一个问题是 调整堆栈空间时,为什么选择数字8?我假设它意味着8个字节,但是如何确定需要调整8个字节呢?我知道我们应该为所有参数(在本例中为一个参数)分配足够的空间,我也在猜测返回地址,但是我们如何知道每个参数需要多少字节呢 我试图通读代码以了解发生了什么,但我在一个问题上感到困惑 beq$t0,$0,L1 我知道,从这里我们分支到L1,其中n减1,但我很困惑。做 日航事实 意思是我们立即返回到上面的事实,但是这次的参数是n=1而不是n=2?[假设n=2是我们的原始参数]我们在什么时候到达代
这个“8”取决于您的代码,它是图片中的“n” 8字节,因为您需要两个值的位置。每个整数值有4个字节…
这些值是一个参数和返回地址。
(调用方和被调用函数有两个单独的返回地址,
但登记册上只有一个地方。
因此,调用方将其地址临时保存在堆栈上) 关于beq的
对的如果$t0
和$zero
相等(即$t0
的值为0),则跳转到L1
关于日航
…用一两个词来说:这是一个函数调用,没有跳转 如果没有函数调用或跳转,则代码将自上而下处理,每个指令都将启动。
想象一下,你的电脑中有东西指向你现在所在的位置。
因此,如果要处理jal,它将指向jal指令。
那里发生了什么:
您将获得另一个指向事实的第一条指令的指令指针,
当第一辆车停在日航时
然后,第二个指针将从函数的顶部向下移动,
而第一个仍然留在原来的位置。
直到第二个指针到达终点:
jr
此时,第二个指针再次被删除,
第一个将在之前停止的位置继续。
…
递归的“魔力”在于,第二个指针可以产生第三个
等等他,等等……把文字放在这里,而不是超大的图片怎么样?你描述得很好,真的很有帮助。