移位操作的代码原理

6.2.1 新的数据相关情况的解决
进一步考虑mfhi、mflo指令的处理过程,这2条指令会在流水线执行阶段读取HI、LO寄存器的值,如果直接采用HILO模块给出的HI、LO寄存器的值,可能不是正确的HI、LO寄存器的值,因为此时处于访存、回写阶段的指令有可能会修改HI、LO寄存器,以如下程序为例。在这里插入图片描述
指令3 4 5 需要修改HI寄存器,当指令6处在执行阶段时,指令5处于访存阶段,指令4处于回写阶段,而此时HI 寄存器的值是指令3刚刚写入的0x00000000,HILO模块正是将该值传到执行阶段。如果采用这个值,程序就会出错,而正确的值应该是当前处于访存阶段的指令5要写入的数据。

在这里插入图片描述

这就是第5章介绍过的数据相关问题,解决措施还是使用数据前推。将处于访存阶段、回写阶段的指令对HI、LO寄存器的操作信息反馈到执行阶段,执行阶段依据这些信息,确定HI、LO寄存器的正确值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值