算术操作指令
MIPS32中算术操作指令共21条,可以分为三类
共4条:乘累加(madd)、无符号乘累加(maddu)、乘累减(msub)、无符号乘累减(msubu)。madd和maddu要求操作数相乘后,再与HI、LO寄存器的值相加,msub和msubu则是相减。即这四条指令要进行一次乘法和一次加(减)法,需要2个时钟周期去完成这类指令,第一个时钟周期进行乘法,第二个时钟周期进行加(减)法。
共2条:有符号除法(div)、无符号除法(divu),使用试商法完成除法运算,对于32位除法,流水线执行阶段至少需要32个时钟周期。
简单算术操作指令
add,addu,sub,subu,slt,sltu指令(R型指令)
格式如下:
31-26 | 25-21 | 20-16 | 15-11 | 10-6 | 5-0 | 用法 | 作用 |
---|
SPECIAL(000000) | rs | rt | rd | 00000 | ADD(10000) | add rd,rs,rt | rd<-rs+rt | SPECIAL(000000) | rs | rt | rd | 00000 | ADDU(10001) | addu rd,rs,rt | rd<-rs+rt | SPECIAL(000000) | rs | rt | rd | 00000 | SUB(100010) | sub rd,rs,rt | rd<-rs-rt | SPECIAL(000000) | rs | rt | rd | 00000 | SLT(101010) | subu rd,rs,rt | rd<-(rs<rt) | SPECIAL(000000) | rs | rt | rd | 000000 | SLTU(101011) | sltu rd,rs,rt | rd<-(rs<rt) |
addi,addiu,slti,sltiu(I型指令)
31-26 | 25-21 | 20-16 | 15-0 | 用法 | 作用 |
---|
ADDI(001000) | rs | rt | immediate | addi rt,rs,immediate | rt<-rs+(sign_extended)immediate | ADDIU(001001) | rs | rt | immediate | addiu rt,rs,immediate | rt<-rs+(sign_extended)immediate | SLTI(001010) | rs | rt | immediate | slti rt,rs,immediate | rt<-(rs<(sign_extended)immediate) | SLTIU(001011) | rs | rt | immediate | sltiu rt,rs,immediate | rt<-(rs<(sign_extended)immediate) |
clo,clz(R型指令)
31-26 | 25-21 | 20-16 | 15-11 | 10-6 | 5-0 | 用法 | 作用 |
---|
SPECIAL2(011100) | rs | rt | rd | 00000 | CLZ(100000) | clz rd rs | rd<-coun_leading_zeros rs | SPECIAL2(011100) | rs | rt | rd | 00000 | CLO(100001) | clo rd rs | rd<-coun_leading_ones rs |
multu,mult,mul指令(R型指令)
31-26 | 25-21 | 20-16 | 15-11 | 10-6 | 5-0 | 用法 | 作用 |
---|
SPECIAL2 | rs | rt | rd | 00000 | MUL(000010) | mul rd,rs,st | rd<- rs*rt | SPECIAL | rs | rt | 00000 | 00000 | MULT(011000)mult rs,st | {hi,lo}<-rs*rt | | SPECIAL | rs | rt | 00000 | 00000 | MULTU(011001) | multu rs,st | {hi,lo}<-rs*rt |
|