MIPS分支地址的计算

时间:2012-03-13 00:10:08

标签: assembly mips cpu-architecture computer-architecture

我不明白如何在MIPS中计算分支地址。

以下是程序计数器(PC)发生的情况:PC = PC + 4 + ((signed-extended offset)<<2)

在添加到signed-extended之前,我看到偏移数为PC的原因,它只是16位值,需要转换为32位值,但为什么我们需要left double shift签名扩展号码??? (另外,<<2表示我们将数字乘以4)

在讨论这个问题时,我会提出这个问题: 当我们偏离立即值(寄存器)时,为什么我们不执行<<2

谢谢!

2 个答案:

答案 0 :(得分:1)

地址必须是4的倍数,因此通过自动乘以4,可以为实际使用留下更多有效位。 (换句话说,就像你在某种程度上确实有18位一样。)

答案 1 :(得分:1)

重要的是要知道指令是四字节对齐。因此,不需要存储两个最低有效地址位,这允许16位位移给出2 ^ 18字节范围。

此外,您可能会注意到数据的位移没有移位,因为数据需要是字节可寻址的。