




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OR1200指令集整理学习笔记张智彬MSN:本文包括所有ORBIS32 I类指令。说明:指令格式中的D,A,B下面的5bit是指相应通用寄存器的具体地址。l.addAdd Signedl.add31.2625.2120.1615.1110987.43.0opcode 0x38D A B reservedopcode 0x0reservedopcode 0x06 bits5 bits5 bits5 bits1 bits2 bits4 bits4bitsl.addrD,rA,rB通用寄存器rA的值和通用寄存器rB的值相加,所得到的结果存入通用寄存器rD中。rD31:0 - rA31:0 + rB31:0SRCY - carrySROV - overflow 发生异常的模式是越界。l.addcAdd Signed and Carryl.addc31.2625.2120.1615.1110987.43.0opcode 0x38D A B reservedopcode 0x0reservedopcode 0x16 bits5 bits5 bits5 bits1 bits2 bits4 bits4bitsl.addcrD,rA,rB通用寄存器rA的值、通用寄存器rB的值和进位CY三者相加,所得到的结果存入通用寄存器rD中。rD31:0 - rA31:0 + rB31:0 + SRCYSRCY - carrySROV - overflow 发生异常的模式是越界。l.addiAdd Immediate Signedl.addi31.2625.2120.1615.0opcode 0x27D A I 6 bits5 bits5 bits16bitsl.addirD,rA,I带符号扩展的立即数的值和通用寄存器rA的值相加,所得到的结果存入通用寄存器rD中。rD31:0 - rA31:0 + exts(Immediate)SRCY - carrySROV - overflow 发生异常的模式是越界。l.addicAdd Immediate Signed and Carryl.addic31.2625.2120.1615.0opcode 0x28D A I 6 bits5 bits5 bits16bitsl.addicrD,rA,I 带符号扩展的立即数的值、通用寄存器rA的值和进位CY三者相加,所得到的结果存入通用寄存器rD中。rD31:0 - rA31:0 + exts(Immediate) + SRCYSRCY - carrySROV - overflow 发生异常的模式是越界。l.andAndl.and31.2625.2120.1615.1110987.43.0opcode 0x38D A B reservedopcode 0x0reservedopcode 0x36 bits5 bits5 bits5 bits1 bits2 bits4 bits4bitsl.andrD,rA,rB 通用寄存器rA的值与通用寄存器rB的值按位相与,所得到的结果存入通用寄存器rD中。rD31:0 - rA31:0 AND rB31:0 无异常模式。l.andiAnd with Immediate Half Wordl.andi31.2625.2120.1615.0opcode 0x29D A K 6 bits5 bits5 bits16bitsl.andirD,rA,K 立即数被0扩展,然后与通用寄存器rA的值按位相与,所得结果存入通用寄存器rD中。rD31:0 - rA31:0 AND extz(Immediate) 无异常模式。l.bfBranch if Flagl.bf31.2625.0opcode 0x4N 6 bits26bitsl.bfN 立即数左移2bit,符号扩展到程序计数器的宽度,然后这个值与分支指令的地址相加,所得到的结果就是分支的有效地址。如果flag被置位,那么程序分支到EA(有效地址)要经过一条指令周期的延迟。EA - exts(Immediate 2) + BranchInsnAddrPC - EA if SRF set 无异常模式。l.bnfBranch if No Flagl.bnf31.2625.0opcode 0x3N 6 bits26bitsl.bnfN立即数左移2bit,符号扩展到程序计数器的宽度,然后这个值与分支指令的地址相加,所得到的结果就是分支的有效地址。如果flag被清零,那么程序分支到EA(有效地址)要经过一条指令周期的延迟。EA - exts(Immediate 2) + BranchInsnAddrPC - EA if SRF cleared 无异常模式。l.jJumpl.j31.2625.0opcode 0x0N 6 bits26bitsl.jN 立即数左移2bit,符号扩展到程序计数器的宽度,然后这个值与跳转指令的地址相加,所得到的结果就是跳转指令的有效地址。程序经过一条指令周期的延迟无条件的跳转到EA(有效地址)。PC - exts(Immediate 2) + JumpInsnAddr 无异常模式。l.jalJump and Linkl.jal31.2625.0opcode 0x1N 6 bits26bitsl.jalN 立即数左移2bit,符号扩展到程序计数器的宽度,然后这个值与跳转指令的地址相加,所得到的结果就是跳转的有效地址。程序经过一条指令周期的延迟无条件的跳转到EA(有效地址)。在延迟槽后的指令地址被存入LR(Link Register)。PC - exts(Immediate 2) + JumpInsnAddrLR - DelayInsnAddr + 4 无异常模式。l.jalrJump and Link Registerl.jalr31.2625.1615.1110.0opcode 0x12reservedB reserved6 bits10 bits5 bits11bitsl.jalrrB 通用寄存器rB的值就是跳转指令的有效地址。程序经过一条指令周期的延迟无条件的跳转到EA(有效地址)。在延迟槽后的指令地址被存入LR(Link Register)。在这里不允许将LR指定为通用寄存器rB。PC - rBLR - DelayInsnAddr + 4 无异常模式。l.jrJump Registerl.jr31.2625.1615.1110.0opcode 0x11reservedB reserved6 bits10 bits5 bits11bitsl.jrrB 通用寄存器rB的值就是跳转指令的有效地址。程序经过一条指令周期的延迟无条件的跳转到EA(有效地址)。PC - rB 无异常模式。l.lbsLoad Byte and Extend with Signl.lbs31.2625.2120.1615.0opcode 0x24D A I 6 bits5 bits5 bits16bitsl.lbsrD,I(rA) 立即数被符号扩展到通用寄存器rA的宽度,然后该值与通用寄存器rA的值相加,所得结果代表着一个有效的地址。在存储器地址EA处的字节按照从高位到低位的顺序(8bit)load到通用寄存器rD中。通用寄存器rD的高位的数值由load进来的8位数据的bit位7的数值来代替。EA - exts(Immediate) + rA31:0rD7:0 - (EA)7:0rD31:8 - (EA)7异常模式为:TLB missPage faultBus error l.lbzLoad Byte and Extend with Zerol.lbz31.2625.2120.1615.0opcode 0x23D A I 6 bits5 bits5 bits16bitsl.lbzrD,I(rA) 立即数被符号扩展到通用寄存器rA的宽度,然后该值与通用寄存器rA的值相加,所得结果代表着一个有效的地址。在存储器地址EA处的字节按照从高位到低位的顺序(8bit)load到通用寄存器rD中。通用寄存器rD的高位的数值由0值来代替。EA - exts(Immediate) + rA31:0rD7:0 - (EA)7:0rD31:8 - 0 异常模式为:TLB missPage faultBus error l.lhsLoad Half Word and Extend with Signl.lhs31.2625.2120.1615.0opcode 0x26D A I 6 bits5 bits5 bits16bitsl.lhsrD,I(rA) 立即数被符号扩展到通用寄存器rA的宽度,然后该值与通用寄存器rA的值相加,所得结果代表着一个有效的地址。在存储器地址EA处的半字被load到通用寄存器rD的低16bit中。通用寄存器rD的高位的数值由半字的位15的值来代替。EA - exts(Immediate) + rA31:0rD15:0 - (EA)15:0rD31:16 - (EA)15 异常模式为:TLB missPage faultBus error Alignment l.lhzLoad Half Word and Extend with Zerol.lhz31.2625.2120.1615.0opcode 0x25D A I 6 bits5 bits5 bits16bitsl.lhzrD,I(rA) 立即数被符号扩展到通用寄存器rA的宽度,然后该值与通用寄存器rA的值相加,所得结果代表着一个有效的地址。在存储器地址EA处的半字被load到通用寄存器rD的低16bit中。通用寄存器rD的高位的值由0值来代替。EA - exts(Immediate) + rA31:0rD15:0 - (EA)15:0rD31:16 - 0 异常模式为:TLB missPage faultBus error Alignment l.lwsLoad Single Word and Extend with Signl.lws31.2625.2120.1615.0opcode 0x22D A I 6 bits5 bits5 bits16bitsl.lwsrD,I(rA) 立即数被符号扩展到通用寄存器rA的宽度,然后该值与通用寄存器rA的值相加,所得结果代表着一个有效的地址。在存储器地址EA处的单字被load到通用寄存器rD31:0中。EA - exts(Immediate) + rA31:0rD31:0 - (EA)31:0 异常模式为:TLB missPage faultBus error Alignment l.lwzLoad Single Word and Extend with Zerol.lwz31.2625.2120.1615.0opcode 0x21D A I 6 bits5 bits5 bits16bitsl.lwzrD,I(rA) 立即数被符号扩展到通用寄存器rA的宽度,然后该值与通用寄存器rA的值相加,所得结果代表着一个有效的地址。在存储器地址EA处的单字被load到通用寄存器rD31:0中。在32位指令系统中l.lws和l.lwz的操作是相同的,在64位指令系统中他们是不相同的。EA - exts(Immediate) + rA31:0rD31:0 - (EA)31:0 异常模式为:TLB missPage faultBus error Alignment l.mfsprMove From Special-Purpose Registerl.mfspr31.2625.2120.1615.0opcode 0x2dD A K 6 bits5 bits5 bits16bitsl.mfsprrD,rA,K 通用寄存器rA的值与立即数做逻辑或运算,所得到的结果作为特殊寄存器的索引值,将这个索引值下的特殊寄存器的值存入通用寄存器rD中。rD31:0 - spr(rA OR Immediate) 无异常模式。l.movhiMove Immediate Highl.movhi31.2625.2120.171615.0opcode 0x6D reservedopcode 0x0K 6 bits5 bits4 bits1 bits16bitsl.movhirD,K 将16bit立即数零扩展然后左移16bit,把所得结果存入通用寄存器rD中。rD31:0 - extz(Immediate) 16 无异常模式。l.mtsprMove To Special-Purpose Registerl.mtspr31.2625.2120.1615.1110.0opcode 0x30K A B K 6 bits5 bits5 bits5 bits11bitsl.mtsprrA,rB,K 将通用寄存器rB的值存入以通用寄存器rA的值和立即数的值做逻辑或运算所得结果为索引值的特殊寄存器中。spr(rA OR Immediate) - rB31:0 无异常模式。l.mulMultiply Signedl.mul31.2625.2120.1615.1110987.43.0opcode 0x38D A B reservedopcode 0x3reservedopcode 0x66 bits5 bits5 bits5 bits1 bits2 bits4 bits4bitsl.mulrD,rA,rB通用寄存器rA的值和通用寄存器rB的值做乘法,所得到的结果被删减到目标寄存器的宽度存入通用寄存器rD中。所有的操作数都被视为有符号整数。rD31:0 - rA31:0 * rB31:0SROV - overflowSRCY - carry 发生异常的模式是越界。l.muliMultiply Immediate Signedl.muli31.2625.2120.1615.0opcode 0x2cD A I 6 bits5 bits5 bits16bitsl.mulirD,rA,I 立即数的值和通用寄存器rA的值做乘法,所得到的结果被删减到目标寄存器的宽度存入通用寄存器rD中。rD31:0 - rA31:0 * ImmediateSROV - overflowSRCY - carry 发生异常的模式是越界。l.muluMultiply Unsignedl.mulu31.2625.2120.1615.1110987.43.0opcode 0x38D A B reservedopcode 0x3reservedopcode 0xb6 bits5 bits5 bits5 bits1 bits2 bits4 bits4bitsl.mulurD,rA,rB 通用寄存器rA的值和通用寄存器rB的值做乘法,所得到的结果被删减到目标寄存器的宽度存入通用寄存器rD中。所有的操作数都被视为无符号整数。rD31:0 - rA31:0 * rB31:0SROV - overflowSRCY - carry 发生异常的模式是越界。l.nopNo Operationl.nop31.2423.1615.0opcode 0x15reservedK 8 bits8 bits16bitsl.nopK 在至少一个时钟周期完成之前没有任何指令动作。这条指令通常用来填充delay slot gaps。这里的立即数可以用来做仿真用。l.orOrl.or31.2625.2120.1615.1110987.43.0opcode 0x38D A B reservedopcode 0x0reservedopcode 0x46 bits5 bits5 bits5 bits1 bits2 bits4 bits4bitsl.orrD,rA,rB 按位或rD31:0 - rA31:0 OR rB31:0 l.oriOr with Immediate Half Wordl.ori31.2625.2120.1615.0opcode 0x2aD A K 6 bits5 bits5 bits16bitsl.orirD,rA,K rD31:0 - rA31:0 OR extz(Immediate) 立即数进行零扩展,然后与通用寄存器rA的值按位或运算。l.rfeReturn From Exceptionl.rfe31.2625.0opcode 0x9reserved6 bits26bitsl.rfe PC - EPCRSR - ESR 这条指令的执行是返回异常处理之前的状态。这条指令没有delay slot。l.sbStore Bytel.sb31.2625.2120.1615.1110.0opcode 0x36I A B I 6 bits5 bits5 bits5 bits11bitsl.sbI(rA),rB EA - exts(Immediate) + rA31:0(EA)7:0 - rB7:0 这个偏移量被符号扩展,然后加到通用寄存器rA上,所得到的结果就是一个有效地址EA。通用寄存器rB的低8bit数据被存放到以地址EA为存储空间的低8bit中。异常模式为:TLB missPage faultBus error l.sfeqSet Flag if Equall.sfeq31.2120.1615.1110.0opcode 0x720A B reserved11 bits5 bits5 bits11bitsl.sfeqrA,rB SRF - rA31:0 = rB31:0 比较通用寄存器rA和rB的值,如果比较结果相同,那么置位比较标志,否则比较标志被清零。无异常模式。l.sfgesSet Flag if Greater or Equal Than Signedl.sfges31.2120.1615.1110.0opcode 0x72bA B reserved11 bits5 bits5 bits11bitsl.sfgesrA,rB SRF = rB31:0 通用寄存器rA和rB的值作为有符号整数来比较。如果rA的值大于等于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sfgeuSet Flag if Greater or Equal Than Unsignedl.sfgeu31.2120.1615.1110.0opcode 0x723A B reserved11 bits5 bits5 bits11bitsl.sfgeurA,rB SRF = rB31:0 通用寄存器rA和rB的值作为无符号整数来比较。如果rA的值大于等于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sfgtsSet Flag if Greater Than Signedl.sfgts31.2120.1615.1110.0opcode 0x72aA B reserved11 bits5 bits5 bits11bitsl.sfgtsrA,rB SRF rB31:0 通用寄存器rA和rB的值作为有符号整数来比较。如果rA的值大于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sfgtuSet Flag if Greater Than Unsignedl.sfgtu31.2120.1615.1110.0opcode 0x722A B reserved11 bits5 bits5 bits11bitsl.sfgturA,rB SRF rB31:0 通用寄存器rA和rB的值作为无符号整数来比较。如果rA的值大于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sflesSet Flag if Less or Equal Than Signedl.sfles31.2120.1615.1110.0opcode 0x72dA B reserved11 bits5 bits5 bits11bitsl.sflesrA,rB SRF - rA31:0 = rB31:0 通用寄存器rA和rB的值作为有符号整数来比较。如果rA的值小于等于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sfleuSet Flag if Less or Equal Than Unsignedl.sfleu31.2120.1615.1110.0opcode 0x725A B reserved11 bits5 bits5 bits11bitsl.sfleurA,rB SRF - rA31:0 = rB31:0 通用寄存器rA和rB的值作为无符号整数来比较。如果rA的值小于等于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sfltsSet Flag if Less Than Signedl.sflts31.2120.1615.1110.0opcode 0x72cA B reserved11 bits5 bits5 bits11bitsl.sfltsrA,rB SRF - rA31:0 rB31:0 通用寄存器rA和rB的值作为有符号整数来比较。如果rA的值小于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sfltuSet Flag if Less Than Unsignedl.sfltu31.2120.1615.1110.0opcode 0x724A B reserved11 bits5 bits5 bits11bitsl.sflturA,rB SRF - rA31:0 rB31:0 通用寄存器rA和rB的值作为无符号整数来比较。如果rA的值小于rB的值,那么置位标志位,否则标志位将被清零。无异常模式。l.sfneSet Flag if Not Equall.sfne31.2120.1615.1110.0opcode 0x721A B reserved11 bits5 bits5 bits11bitsl.sfnerA,rB SRF - rA31:0 != rB31:0 比较通用寄存器rA和rB的值。如果他们的值不相同,那么标志位被置位,否则标志位被清零。无异常模式。l.shStore Half Wordl.sh31.2625.2120.1615.1110.0opcode 0x37I A B I 6 bits5 bits5 bits5 bits11bitsl.shI(rA),rB EA - exts(Immediate) + rA31:0(EA)15:0 - rB15:0 这个偏移量被符号扩展,然后加到通用寄存器rA上,所得到的结果就是一个有效的地址EA。通用寄存器rB的低16bit值被存放到以EA位起始地址的存储空间的低16位中。异常模式为:TLB missPage faultBus errorAlignment l.sllShift Left Logicall.sll31.2625.2120.1615.11109.6543.0opcode 0x38D A B reservedopcode 0x0reservedopcode 0x86 bits5 bits5 bits5 bits1 bits4 bits2 bits4bitsl.sllrD,rA,rB rD31:rB4:0 - rA31-rB4:0:0rDrB4:0-1:0 - 0 取通用寄存器rB中的rB4:0的值作为索引值N,取通用寄存器rA31-N:0的值按位存入通用寄存器rD31:N中,然后rDN-1:0用0值填充。实际上本操作就是将通用寄存器rA向左移位N bit(N=rB4:0)剩下的位数补零,然后将结果存入通用寄存器rD中。In 32-bit implementations bit 5 of rB is ignored. 无异常模式。l.slliShift Left Logical with Immediatel.slli31.2625.2120.1615.8765.0opcode 0x2eD A reservedopcode 0x0L 6 bits5 bits5 bits8 bits2 bits6bitsl.sllirD,rA,L rD31:L - rA31-L:0rDL-1:0 - 0 本操作与上一条指令类似,不同的地方就是移位的位数变为了立即数而已。无异常模式。l.sraShift Right Arithmeticl.sra31.2625.2120.1615.11109.6543.0opcode 0x38D A B reservedopcode 0x2reservedopcode 0x86 bits5 bits5 bits5 bits1 bits4 bits2 bits4bitsl.srarD,rA,rB rD31-rB4:0:0 - rA31:rB4:0rD31:32-rB4:0 - rA31 取通用寄存器rB中的rB4:0的值作为索引值N,取通用寄存器rA31:N的值按位存入通用寄存器rD31-N:0中,然后rD31:32-N用rA31(符号位)值填充。实际上本操作就是将通用寄存器rA向右移位N bit(N=rB4:0),然后将结果存入通用寄存器rD中,rD余下的高位bit由rA中的符号位扩展。In 32-bit implementations bit 5 of rB is ignored. 无异常模式。l.sraiShift Right Arithmetic with Immediatel.srai31.2625.2120.1615.8765.0opcode 0x2eD A reservedopcode 0x2L 6 bits5 bits5 bits8 bits2 bits6bitsl.srairD,rA,L rD31-L:0 - rA31:LrD31:32-L - rA31 本操作与上一条指令类似,不同的地方就是移位的位数变为了立即数而已。无异常模式。l.srlShift Right Logicall.srl31.2625.2120.1615.11109.6543.0opcode 0x38D A B reservedopcode 0x1reservedopcode 0x86 bits5 bits5 bits5 bits1 bits4 bits2 bits4bitsl.srlrD,rA,rB rD31-rB4:0:0 - rA31:rB4:0rD31:32-rB4:0 - 0 取通用寄存器rB中的rB4:0的值作为索引值N,取通用寄存器rA31:N的值按位存入通用寄存器rD31-N:0中,然后rD31:32-N用0值填充。实际上本操作就是将通用寄存器rA向右移位N bit(N=rB4:0),然后将结果存入通用寄存器rD中,rD余下的高位bit用0值填充。In 32-bit implementations bit 5 of rB is ignored. 无异常模式。l.srliShift Right Logical with Immediatel.srli31.2625.2120.1615.8765.0opcode 0x2eD A reservedopcode 0x1L 6 bits5 bits5 bits8 bits2 bits6bitsl.srlirD,rA,L rD31-L:0 - rA31:LrD31:32-L - 0 此指令操作与上一条指令类似,不同的是把rB4:0换做6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司法课件内容
- 护士长骨科工作总结
- 星级酒店消防员培训
- 公司水电安全培训记录课件
- 广东省深圳市龙岗区2023-2024学年高一上学期期末考试语文题目及答案
- 广东省梅州市大埔县2024-2025学年高一上学期第一次月考地理考点及答案
- 2025未签订合同离职者须知
- 2025聘用校长合同书范文
- 2025年员工因病治疗期满后拒绝解除劳动合同公司陷入两难境地
- 2025配送员劳动合同
- 安全防范系统升级和服务协议
- 整合照护课件
- 北宋名臣滕元发:才情、功绩与时代映照下的复合型士大夫
- 柜面业务无纸化培训课件
- 电工安全教育培训试题及答案
- 彩色水稻种植技术要求
- 2025年湖南银行社招笔试题库及答案
- 2025年精密数控机床进口采购合同
- DB44T 2635-2025 国土变更调查县级数据库建设技术规范
- 海南省2025年中考化学真题试题(含答案)
- 脱证中医护理常规
评论
0/150
提交评论