基于PC的跳转寻址:求解跳转指令及移位与PC值运用疑问
MIPS J指令计算过程(目标地址0xAE87698C,当前PC=0xAF70018B)
核心规则回顾
MIPS的j指令是无条件跳转,目标地址由两部分拼接而成:
- 高4位:当前指令执行时的PC值+4的高4位(MIPS流水线中,PC取指后会自动+4)
- 低28位:指令中26位立即数左移2位(MIPS为字对齐架构,地址低两位固定为00)
推导指令时,需从目标地址提取26位立即数,再结合j指令固定操作码(6位000010)组成最终32位指令。
步骤1:计算PC+4
当前PC值为0xAF70018B,执行j指令时PC已完成自增,用于地址拼接的基准地址为:
0xAF70018B + 4 = 0xAF70018F
步骤2:提取目标地址的低28位
目标跳转地址0xAE87698C的低28位(高4位将被PC+4的高4位覆盖,这是j指令的256MB跳转范围限制):
0xAE87698C 的低28位 = 0xE87698C
步骤3:计算26位立即数
将目标地址的低28位右移2位(对应左移2位的逆操作),得到指令中的26位立即数:
0xE87698C >> 2 = 0x3A1D963
转换为26位二进制:11101000011101101001100011
步骤4:拼接生成32位指令
将j指令固定操作码000010与26位立即数拼接,得到完整32位二进制指令:
00001011101000011101101001100011
最终结果
- 32位二进制指令:
00001011101000011101101001100011 - 等效十六进制值:
0x0BA1D963
内容的提问来源于stack exchange,提问作者eswcs
相关产品推荐
相关产品推荐

