移动指令说明
移动操作指令
不涉及特殊寄存器LO、HI:
movn:判断地址为rt的通用寄存器的值,如果不为零,将地址为rs的通用寄存器的值赋给地址为rd的通用寄存器;反之,保存rd的值
movz:与movn相反。判断地址为rt的通用寄存器的值,如果为零,将地址为rs的通用寄存器的值赋给地址为rd的通用寄存器;反之,保存rd的值
涉及特殊寄存器LO、HI:
mfhi:将特殊寄存器HI的值赋给地址为rd的通用寄存器
mflo:将特殊寄存器LO的值赋给地址为rd的通用寄存器
mthi:将地址为rs的通用寄存器的值赋给特殊寄存器HI
mtlo:将地址为rs的通用寄存器的值赋给特殊寄存器LO
R型指令
op[31:26] | rs[25:21] | rt[20:16] | rd[15:11] | sa[10:6] | func[5:0] |
---|
名称 | 指令用法 | 指令作用 | 指令码[31:26] | 移位相关[10:6] | 功能码[5:0] |
---|---|---|---|---|---|
MOVN | movn rd, rs, rt | if rt ≠ 0 then rd <- rs | 6’b 00_0000 | 5’b 00000 | 6’b 00_1011 |
MONZ | monz rd, rs, rt | if rt = 0 then rd <- rs | 6’b 00_0000 | 5’b 00000 | 6’b 00_1010 |
MFHI | mfhi rd | rd <- hi | 6’b 00_0000 | 5’b 00000 | 6’b 01_0000 |
MFLO | mflo rd | rd <- lo | 6’b 00_0000 | 5’b 00000 | 6’b 01_0010 |
MTHI | mthi rs | hi <- rs | 6’b 00_0000 | 5’b 00000 | 6’b 01_0001 |
MTLO | mtlo rs | lo <- rs | 6’b 00_0000 | 5’b 00000 | 6’b 01_0011 |
特殊寄存器HI、LO
用于保存乘法、除法结果。
当用于保存乘法结果,HI寄存器保存结果的高32位,LO寄存器保存结果的低32位;
当用于保存除法结果,HI寄存器保存余数,LO寄存器保存商