CPU-移动操作指令说明

移动操作指令说明
      MIPS32指令集架构中定义的移动操作指令共有6条:movn、movz、mfhi、mthi、mflo、mtlo,后4条指令涉及到了对特殊寄存器HI、LO的读写操作,截止到本章,我们的OpenMIPS处理器只实现了32个通用寄存器、以及PC,所有的指令也只是对32个通用寄存器进行操作,还没有涉及特殊寄存器,本章将实现HI、LO这两个特殊寄存器。

      HI、LO寄存器用于保存乘法、除法结果。当用于保存乘法结果时,HI寄存器保存结果的高32位,LO寄存器保存结果的低32位;当用于保存除法结果时,HI寄存器保存余数,LO寄存器保存商。在后续“算术操作指令的实现”一章中,会进一步说明。

      这6条移动操作指令的格式如图6-1所示。

      从图6-1可知,这6条指令都是R类型指令,并且指令码都是6'b000000,即均为SPECIAL类指令,同时,指令第6-10bit都为0,可以依据指令中0-5bit功能码的值判断是哪一种指令。各指令的用法及作用说明如下。

 当功能码为6'b001011时,表示是movn指令
      指令用法为:movn rd, rs, rt

      指令作用为:if rt ≠0 then rd <- rs,判断地址为rt的通用寄存器的值,如果不为零,那么将地址为rs的通用寄存器的值赋给地址为rd的通用寄存器,反之,保持地址为rd的通用寄存器不变。movn是Move Conditional on Not Zero的意思。

当功能码为6'b001010时,表示是movz指令
      指令用法为:movz rd, rs, rt

      指令作用为:if rt = 0 then rd <- rs,与上面movn指令的作用正好相反,判断地址为rt的通用寄存器的值,如果为零,那么将地址为rs的通用寄存器的值赋给地址为rd的通用寄存器,反之,保持地址为rd的通用寄存器不变。movz是Move Conditional on Zero的意思。

当功能码为6'b010000时,表示是mfhi指令
      指令用法为:mfhi rd

      指令作用为:rd <- hi,将特殊寄存器HI的值赋给地址为rd的通用寄存器。

 当功能码为6'b010010时,表示是mflo指令
      指令用法为:mflo rd

      指令作用为:rd <- lo,将特殊寄存器LO的值赋给地址为rd的通用寄存器。

当功能码为6'b010001时,表示是mthi指令
      指令用法为:mthi rs

      指令作用为:hi <- rs,将地址为rs的通用寄存器的值赋给特殊寄存器HI。

 当功能码为6'b010011时,表示是mtlo指令
      指令用法为:mtlo rs

      指令作用为:lo <- rs,将地址为rs的通用寄存器的值赋给特殊寄存器LO。
--------------------- 
作者:leishangwen 
原文:https://blog.csdn.net/leishangwen/article/details/38399681 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vuko-wxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值