计算MIPS上的分支地址
问题描述:
我不明白MIPS中分支地址是如何计算的。计算MIPS上的分支地址
这里是大画面发生了什么程序计数器(PC):
我明白为什么偏置号signed-extended
被添加到PC
前的原因,仅仅是16位值,需要打开转换成32位的值,但为什么我们需要left double shift
signed-extended number ??? (另外,<<2
意味着我们乘以4号)关于这个问题
虽然我们,我会延长问题: 当我们从立即值(寄存器)偏移,为什么我们不这样做<<2
?
谢谢!
答
重要的是要知道的是,指令是四字节对齐。所以,不需要存储两个最低有效地址位,并且这允许16位位移给出2^18个字节的范围。
此外,您可能会注意到数据的位移没有移位,因为数据需要字节寻址。
答
该地址必须是四的倍数,所以通过自动乘以四,可以为实际使用留下更多有效位。 (换句话说,就像你真的有18位一样。)