MIPS编码,看这一篇就够了

MIPS指令基本格式 R、I、J

R型

1)一共有六个域
2)shamt表示的是移位操作的位数
3)R指令中opcode的值一般为0,funct和opcode一起表示指令的类型
4)目的操作数是用来保存运算结果的操作数

1、ADD:符号加

        

funct:32,opcode:0,shamt:0

2、ADDU:无符号加

funct:33,opcode:0,shamt:0

3、AND:与

funct:36,opcode:0,shamt:0
运算规则:有0为0,全1为1

4、NOR:或非

格式:nor rd,rs,rt
rs:第一个源操作数
rt:第二个源操作数
rd:目的操作数
funct:39,opcode:0,shamt:0
示例:nor $s1,$s2,$s3   //全零为1,有1为0

5、OR:或

格式:or rd,rs,rt
rs:第一个源操作数
rt:第二个源操作数
rd:目的操作数
funct:37,opcode:0,shamt:0
示例:or $s1,$s2,$s3   //全0为0,有1为1

6、XOR:异或

格式:xor rd,rs,rt
rs:第一个源操作数
rt:第二个源操作数
rd:目的操作数
funct:38,opcode:0,shamt:0
示例:xor $s1,$s2,$s3   //s2寄存器与s3寄存器的值相同则s1寄存器中的值为0,相异则为1

7、SUB:符号减

格式:sub rd,rs,rt
rs:第一个源操作数(被减数)
rt:第二个源操作数(减数)
rd:目的操作数
funct:34,opcode:0,shamt:0

8、无符号减

格式:subu rd,rs,rt
rs:第一个源操作数(被减数)
rt:第二个源操作数(减数)
rd:目的操作数
funct:35,opcode:0,shamt:0

练习

1.假定变量f, g, h, i, j的值分别放入对应寄存器$s0~$s4,并且字类型数组A和B的首地址分别放在寄存器$s6和$s7中,请分别用最短的C语言程序段实现以下MIPS指令序列的功能。
(1)    add $s0,$s0,$s1
        add $s0,$s0,$s2
        add $s0,$s0,$s3
        add $s0, $s0,$s4
        sw $s0, 16($s7)
(2)    Iw $s0,4($s6)
(3)    add $s0,$s0,$s1
        add $s0,$s3,$s2
        add $s0,$s0,$s3
(4)    lui $s0, 0xabcd
        ori $s0,$s0,0x80
        sw $s0,12($s6)

1)f = f + g + h + i + j; B[4] = f; //sw是存储字,将寄存器s0中的数存储在后述地址,4是由16/4得出
2) A[1] = f;        //lw是加载字,将寄存器s0中的值加载到A[1] 1是由4/4得出
3)f = f + g + i + h + i;         
4) f = 0xabcd | 0x80; A[3] = f;       //lui:立即数加载至最高位,ori:或立即数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值