MIPS指令偏移量左移解析

举报 回答
MIPS指令偏移量左移解析
问在线客服
扫码问在线客服

[图片]分支指令的偏移量需左移两位后送入上方ALU;而lw指令的偏移量则直接送入下方ALU,无需移位处理。[图片]偏移量似乎本就是4的倍数,让人有些困惑。 查看全部

  • 回答数

    6

  • 浏览数

    6,254

举报 回答

6个回答 默认排序
  • 默认排序
  • 按时间排序

没找到满意答案?去问秘塔AI搜索
取消 复制问题
MIPS分支指令的目标地址由当前程序计数器(PC)值加4后,再与符号扩展的16位偏移量相加,所得结果左移2位(即乘以4)得到。该设计源于指令按字(4字节)对齐存储,每次PC递增4,故偏移量以字为单位表示。相比之下,加载与存储指令采用基址加偏移寻址方式,直接生成有效内存地址,无需依赖PC值参与地址计算,仅需将寄存器中的基址与立即数偏移相加即可完成地址生成。
取消 评论
简单说——编译器偷懒,存小数(指令数),硬件自动×4(转字节),左移2位就是干这事儿的
取消 评论
啊?偏移量左移2位就完事了,因为指令都是4字节对齐的,末两位肯定是0,省着存呗~
取消 评论
左移2位=×4,毕竟MIPS里一条指令占4个字节,偏移量单位是指令条数,不是字节哈~
取消 评论
就是把16位偏移量当成字数来用,左移2位变成字节偏移,不然地址都算歪了
取消 评论
我跳3条指令,那实际跳的是3×4=12个字节,所以得左移2位补零啊
取消 评论
ZOL问答 > MIPS指令偏移量左移解析

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?