MIPS核心指令

几乎所有的体系结构都可以找到跟MIPS核心指令相似的指令,就像表9到表13所示的那样。指令可以分为四类:数据传输(表9);算术,逻辑(表10);控制(表11);浮点指令(表12)。第五类(表13)是寄存器使用的约定和各个体系结构的伪指令。如果一条MIPS核心指令在另外的体系结构中需要顺序的几条指令来替代,在表9到表13中用分号来连接。(为了防止混淆,在这个附录中,目的寄存器总是最左边的那个,不一定跟各个指令集中原本的用法一样。)表14到表17罗列的是嵌入式RISC中等价的指令。嵌入式RISC中一般不会定义浮点指令。

数据传输(指令格式) R-I R-I R-I,R-R R-I,R-R R-I,R-R
指令种类 Alpha MIPS64 PA-RISC 2.0 PowerPC SPARC v.9
加载有符号字节 LDBU;SEXTB LB LDB;EXTRW,S 31,8 LBZ; EXTSB LDSB
加载无符号字节 LDBU LBU LDB, LDBX, LDBS LBZ LDUB
加载有符号半字 LDWU;SEXTW LH LDH; EXTRW,S 31,16 LHA LDSH
加载无符号半字 LDWU LHU LDH, LDHX, LDHS LHZ LDUH
加载一个字 LDLS LW LDW, LDWX, LDWS LW LD
加载单精度浮点 LDS* LWC1 FLDWX, FLDWS LFS LDF
加载双精度浮点 LDT LDC1 FLDDX, FLDDS LDF LDDF
保存字节 STB SB STB, STBX, STBS STB STB
保存半字 STW SH STH, STHX, STHS STH STH
保存一个字 STL SW STW, STWX, STWS STW ST
保存单精度浮点 STS SWC1 FSTWX, FSTWS STFS STF
保存双精度浮点 STT SDC1 FSTDX, FSTDS STFD STDF
读写特殊寄存器 MF_,MT_ MF,MT_ MFCTL, MTCTL MFSPR, MF_,MTSPR, MT_ RD, WR, RDPR,WRPR, LDXFSR,STXFSR
移动整数到浮点寄存器 ITOFS MFC1/DMFC1 STW; FLDWX STW; LDFS ST; LDF
移动浮点到整数寄存器 FTTOIS MTC1/DMTC1 FSTWX; LDW STFS; LW STF; LD

表9:MIPS对应的桌面RISC数据传输指令。等价MIPS指令的几条顺序指令,由分号分隔,如果有好几条指令可以对应,则用逗号分隔。在这个图中,半字是16bit,一个字是32个bit。注意在Alpha中,LDS将单精度浮点转换成双精度浮点,并且填满了整个64位寄存器。

算术/逻辑(指令格式) R-R, R-I R-R, R-I R-R, R-I R-R, R-I R-R, R-I
指令种类 Alpha MIPS64 PA-RISC 2.0 PowerPC SPARC v.9
加法 ADDL ADDU, ADDU ADDL, LD0, ADDI,UADDCM ADD, ADDI ADD
加法(溢出触发异常 ADDLV ADD, ADDI ADDO, ADDIO ADDO;MCRXR; BC ADDcc; TVS
减法 SUBL SUBU SUB, SUBI SUBF SUB
减法(溢出触发异常) SUBLV SUB SUBTO, SUBIO SUBF/oe SUBcc; TVS
乘法 MULL MULT,MULTU SHiADD;..;(i=1,2,3) MULLW, MULLI MULX
乘法(溢出触发异常) MULLV SHiADDO;...;
除法 DIV, DIVU DS;...; DS DIVW DIVX
除法(溢出触发异常)
AND AND, ANDI AND AND, ANDI AND
BIS OR, ORI OR OR, ORI OR
异或 XOR XOR, XORI XOR XOR, XORI XOR
加载寄存器高位 LDAH LUI LDIL ADDIS SETHI (B fmt.)
逻辑左移 SLL SLLV, SLL DEPW, Z 31-i,32-i RLWINM SLL
逻辑右移 SRL SRLV, SRL EXTRW, U 31, 32-i RLWINM 32-i SRL
算术右移 SRA SRAV, SRA EXTRW, S 31, 32-i SRAW SRA
比较 CMPEQ, CMPLT, CMPLE SLT/U, SLTI/U COMB CMP(I)CLR SUBcc r0,...

表10:MIPS对应的桌面RISC算术/逻辑指令。破折号代表那个体系结构没有对应的指令,或者说不是几条指令就可以得到等价的操作。等价MIPS指令的几条顺序指令,由分号分隔,如果有好几条指令可以对应,则用逗号分隔。在算术/逻辑类指令中,除了SPARC的体系结构都用不同的指令助记符来标明一个立即数操作。SPARC直接提供多个立即数版本的指令(当然,它们是独立的操作符)。

results matching ""

    No results matching ""