附录A MIPSsim的指令列表.doc_第1页
附录A MIPSsim的指令列表.doc_第2页
附录A MIPSsim的指令列表.doc_第3页
附录A MIPSsim的指令列表.doc_第4页
附录A MIPSsim的指令列表.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录A MIPSsim的指令列表(MIPS64指令集的一个子集)MIPSsim是一个指令级和流水线级的MIPS模拟器。它能够执行用MIPS汇编语言(子集)编写的程序。下面给出它所能够执行的MIPS指令的列表。符号说明:(1) 在指令助记符中,“.W”表示32位整数,“.L”表示64位整数,“.S”表示单精度浮点数,“.D”表示双精度浮点数。“.fmt”表示多种格式的数据,fmt(S, D, W, L)。(2) 助记符的最后一个字母为U表示无符号操作,I表示与立即值操作,IU表示无符号立即值操作。助记符的第一个字母为D表示是双字(64位)操作。(3) 为简洁起见,直接用rs来表示rs寄存器中的内容,其他的如rt,rd,fs,ft,fd等都是如此。(4) fs, ft, fd表示浮点寄存器。一般来说,fs和ft表示源操作数(寄存器),fd表示结果寄存器。(5) rs, rt, rd表示整数寄存器,也称为通用寄存器。一般来说,rs和rt表示源操作数(寄存器),rd表示目的寄存器。(6) 以下是两个特殊寄存器:LO特殊寄存器,常用来存放乘积的低32位(或64位)以及除法的商;HI特殊寄存器,常用来存放乘积的高32位(或64位)以及除法的余数。1. 算术运算指令名称及缩写格式描述与说明寄存器加(ADD)ADD rd, rs, rtrdrs + rt32位,按有符号数操作。立即值加(ADDI)ADDI rt, rs, immediatertrs + immediate32位,按有符号数操作,immediate都是16位的。下同。无符号立即值加(ADDIU)ADDIU rt, rs, immediatertrs + immediate32位,按无符号数操作,无符号加(ADDU)ADDU rd, rs, rtrdrs + rt32位,按无符号数操作。双字寄存器加(DADD)DADD rd, rs, rtrd rs + rt 按有符号数操作。双字立即值加(DADDI)DADDI rt, rs, immediatert rs + immediate按有符号数操作。双字无符号立即值加(DADDIU)DADDIU rt, rs, immediatert rs + immediate按无符号数操作。双字无符号加(DADDU)DADDU rd, rs, rtrd rs + rt 按无符号数操作。寄存器减(SUB)SUB rd, rs, rtrdrs rt 32位,按有符号数操作。无符号减(SUBU)SUBU rd, rs, rtrdrs rt32位,按无符号数操作。双字寄存器减(DSUB)DSUB rd, rs, rtrd rs rt 按有符号数操作。双字无符号减(DSUBU)DSUBU rd, rs, rtrd rs rt 按无符号数操作。寄存器乘1(MUL)MUL rd, rs, rtrdrsrt32位,按有符号数操作。寄存器乘2(MULT)MULT rs, rt(LO,HI)rsrt,32位,按有符号数操作。所得到的积的低32位按符号扩展后送特殊寄存器LO,高32位按符号扩展后送特殊寄存器HI。无符号寄存器乘(MULTU)MULTU rs, rt按无符号数操作。其余同MULT。双字寄存器乘(DMULT)DMULT rd, rs, rt(LO,HI)rsrt积的低64位送LO,高64位送HI,按有符号数操作。双字无符号乘(DMULTU)DMULTU rd, rs, rt按无符号数操作。其余同DMULT.寄存器除(DIV)DIV rs, rt(LO,HI)rs/rt32位商送LO,32位余数送HI,按有符号数操作。无符号寄存器除(DIVU)DIVU rs, rt按无符号数操作。其余同DIV。双字寄存器除(DDIV)DDIV rs, rt(LO,HI)rs/rt64位商送LO,64位余数送HI,按有符号数操作。双字无符号除(DDIVU)DDIVU rs, rt按无符号数操作。其余同DDIV。小于比较(SLT)SLT rd, rs, rtif ( rs rt ) rd1else rd0 按有符号数操作。无符号小于比较(SLTU)SLTU rd, rs, rtif ( rs rt ) rd1else rd0 按无符号数操作。立即值小于比较(SLTI)SLTI rt, rs, immediateif (rs immediate ) rt1else rt0 按有符号数操作。无符号立即值小于比较(SLTIU)SLTIU rt, rs, immediateif (rs immediate ) rt1else rt0 按无符号数操作。字节符号位扩展(SEB)SEB rd, rtrdrt的末字节按符号位扩展半字符号位扩展(SEH)SEH rd, rtrdrt的后半字按符号位扩展2. 逻辑运算指令名称格式描述与(AND)AND rd, rs, rtrdrs AND rt立即值与(ANDI)ANDI rt, rs, immediatertrs AND immediate取立即值高位(LUI)LUI rt, immediate16位immediate低位拼接16位0,然后按符号位扩展后装入rt。或非(NOR)NOR rd, rs, rtrdrs NOR rt或(OR)OR rd, rs, rtrdrs OR rt立即值或(ORI)ORI rt, rs, immediatertrs OR immediate异或(XOR)XOR rd, rs, rtrdrs XOR rt立即值异或(XORI)XORI rt, rs, immediatertrs XOR immediate3. CPU移位指令名称格式描述按立即值逻辑左移(SLL)SLL rd, rt, sardrt sart中的低32位进行算术右移,其余同SLL。按立即值逻辑右移(SRL)SRL rd, rt, sardrt sart中的低32位进行逻辑右移,其余同SLL。按变量逻辑左移(SLLV)SLLV rd, rt, rsrdrt rs rt中的低32位进行算术右移,其余同SLLV。 按变量逻辑右移(SRLV)SRLV rd, rt, rsrdrt rsrt中的低32位进行逻辑右移,其余同SLLV。按立即值循环右移(ROTR)ROTR rd, rt, sard rt中的低32位进行循环右移。移动的位数由立即值sa给出。按变量循环右移(ROTRV)ROTRV rd, rt, rsrd rt中的低32位进行循环右移。移动的位数由寄存器rs给出。双字按立即值逻辑左移(DSLL)DSLL rd, rt, sardrt sa 移动的位数由立即值sa给出。双字按立即值算术右移(DSRA)DSRA rd, rt, sardrt sa移动的位数由立即值sa给出。双字按变量逻辑左移(DSLLV)DSLLV rd, rt, rsrdrt rs移动的位数由寄存器rs给出。双字按变量算术右移(DSRAV)DSRAV rd, rt, rsrdrt rs移动的位数由寄存器rs给出。双字按立即值循环右移(DROTR)DROTR rd, rt, sard rt中的双字循环右移。移动的位数由立即值sa给出。双字按变量循环右移(DROTRV)DROTRV rd, rt, rsrd rt中的双字循环右移。移动的位数由寄存器rs给出。4. CPU传送指令名称格式描述等于0传送(MOVZ)MOVZ rd, rs, rtIf(rt=0)then rdrs不等于0传送(MOVN)MOVN rd, rs, rtIf(rt!=0) then rdrs从HI传送至整数寄存器(MFHI)MFHI rdrdHI从LO传送至整数寄存器(MFLO)MFLO rdrdLO从整数寄存器传送至HI (MTHI)MTHI rsHI rs从整数寄存器传送至LO (MTLO)MTLO rsLO rs浮点条件码为假整数传送(MOVF)MOVF rd, rs, ccif FPConditionCode(cc) = 0 then rd rs浮点条件码为真整数传送(MOVT)MOVT rd, rs, ccif FPConditionCode(cc) =1then rd rs5. 浮点传送指令名称格式描述把浮点控制寄存器的内容传送至整数寄存器(CFC1)CFC1 rt, fs把fs中的32位数据按符号位扩展成64位后送入rt。把整数寄存器的内容传送至浮点控制寄存器(CTC1)CTC1 rt, fsfs rt从浮点寄存器传送双字到整数寄存器(DMFC1)DMFC1 rt, fsrtfs从整数寄存器传送双字到浮点寄存器(DMTC1)DMTC1 rt, fsfs rt从浮点寄存器传送32位至整数寄存器(MFC1)MFC1 rt, fsrtfs符号位扩展后从整数寄存器传送32位至浮点寄存器(MTC1)MTC1 rt, fsfsrt单精度浮点传送(MOV.S)MOV.S fd, fsfdfs双精度浮点传送(MOV.D)MOV.D fd, fs等于0单精度浮点传送(MOVZ.S)MOVZ.S fd, fs, rtIf(rt=0) then fdfs等于0双精度浮点传送(MOVZ.D)MOVZ.D fd, fs, rt不等于0单精度浮点传送(MOVN.S)MOVN.S fd, fs, rtIf( rt!=0) then fdfs不等于0双精度浮点传送(MOVN.D)MOVN.D fd, fs, rt浮点条件码为假单精度浮点传送(MOVF.S)MOVF.S fd,fs, ccif FPConditionCode(cc) = 0 then fd fs浮点条件码为假双精度浮点传送(MOVF.D)MOVF.D fd,fs, ccif FPConditionCode(cc) = 0 then fd fs浮点条件码为真单精度浮点传送(MOVT.S)MOVT.S fd,fs, ccif FPConditionCode(cc) =1 then fd fs浮点条件码为真双精度浮点传送(MOVT.D)MOVT.D fd,fs, ccif FPConditionCode(cc) = 1 then fd fs6. 分支指令名称格式描述无条件转移(B)B offset用以下指令实现:BEQ r0, r0, offset等于0转移(BEQZ)BEQZ rs, rt, offsetif( rs=0) then actionaction表示:以offset作为相对于PC+4的偏移量进行转移。下同。不等于0转移(BNEZ)BNEZ rs, rt, offsetif( rs!=0) then action注相等转移(BEQ)BEQ rs, rt, offsetif( rs=rt) then action注不相等转移(BNE)BNE rs, rt, offsetif( rs!=rt) then action注大于等于0转移(BGEZ)BGEZ rs, offsetif( rs=0) then action注大于0转移(BGTZ)BGTZ rs, offsetif( rs0) then action注小于等于0转移(BLEZ)BLEZ rs, offsetif( rs=0) then action注小于0转移(BLTZ)BLTZ rs, offsetif( rs=0) then action,并将返回地址(当前的PC值)保存到R31。小于0转移并链接(BLTZAL)BLTZAL rs, offsetIf (rs=rt then trap小于自陷(TLT)TLT rs, rtIf rs=rt then trap小于自陷(TLTU)TLTU rs, rtIf rs=immediate then trap小于立即值自陷(TLTI)TLTI rs, immediateIf rs=immediate then trap小于无符号立即值自陷(TLTIU)TLTIU rs, immediateIf rsimmediate then trap11. 浮点运算指令名称格式描述单精度求绝对值(ABS.S)ABS.S fd, fsfdabs(fs)双精度求绝对值(ABS.D)ABS.D fd, fs单精度浮点加(ADD.S)ADD.S fd, fs, ftfdfs + ft双精度浮点加(ADD.D)ADD.D fd, fs, ft单精度浮点减(SUB.S)SUB.S fd, fs, ftfdfs - ft双精度浮点减(SUB.D)SUB.D fd, fs, ft单精度浮点乘(MUL.S)MUL.S fd, fs, ftfdfsft双精度浮点乘(MUL.D)MUL.D fd, fs, ft单精度浮点除(DIV.S)DIV.S fd, fs, ftfdfs / ft双精度浮点除(DIV.D)DIV.D fd, fs, ft单精度浮点求负(NEG.S)NEG.S fd, fsfd fs双精度浮点求负(NEG.D)NEG.D fd, fsfd fs单精度求平方根(SQRT.S)SQRT.S fd, fsfdSQRT(fs)双精度求平方根(SQRT.D)SQRT.D fd, fs12. 浮点分支指令浮点条件码为假转移(BC1F)BC1F cc,offsetif FPConditionCode(cc) = 0 then branch浮点条件码为真转移(BC1T)BC1T cc,offsetif FPConditionCode(cc) = 1 then branch13. 浮点比较指令单精度浮点比较并设置条件码(C.cond.S)C.cond.S fs, ftcond(LT, GT, LE, GE, EQ, NE),按cond的关系对fs和ft进行比较,如果关系成立,则置浮点条件码cc为1,否则置为0。双精度浮点比较并设置条件码(C.cond.D)C.cond.D fs, ft按双精度比较。其余同C.cond.S。14. 浮点转换指令名称格式描述单精度浮点数转换成双精度(CVT.D.S)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论