THINPAD教学计算机软件平台介绍

指令系统

指令格式 指令编码 指令功能 功能说明
ADDIU rx immediate 01001 rx(3) immediate(8) R[x] = R[x] + Sign_extend(immediate) 对立即数immediate进行符号扩展后与寄存器rx的值求和,结果保存到寄存器rx中
ADDIU3 rx ry immediate 01000 rx(3) ry(3) 0 immediate(4) R[y] = R[x] + Sign_extend(immediate) 对立即数immediate进行符号扩展后与寄存器rx的值求和,结果保存到寄存器ry中
ADDSP3 rx immediate 00000 rx(3) immediate(8) R[x] = SP + Sign_extend(immediate) 对立即数immediate进行符号扩展后与寄存器SP的值求和,结果保存到寄存器rx中
ADDSP immediate 01100011 immediate(8) SP = SP + Sign_extend(immediate) 对立即数immediate进行符号扩展后与寄存器SP的值求和,结果保存到寄存器SP中
ADDU rx ry rz 11100 rx(3) ry(3) rz(3) 01 R[z] = R[x] + R[y] 将寄存器rx与寄存器ry的值求和,结果保存到寄存器rz中
AND rx ry 11101 rx(3) ry(3) 01100 R[x] = R[x] & R[y] 对寄存器rx与寄存器ry的值逐位进行逻辑与,结果保存到寄存器rx中
B immediate 00010 immediate(11) PC = PC + Sign_extend(immediate) 将寄存器PC与立即数immediate符号扩展后的值求和,结果保存到寄存器PC中,即程序无条件跳转到目的地址执行
BEQZ rx immediate 00100 rx(3) immediate(8) if (R[x] = 0) then PC = PC + Sign_extend(immediate) 若寄存器rx的值为0,则跳转到目的地址执行;否则顺序执行下一条指令
BNEZ rx immediate 00101 rx(3) immediate(8) if (R[x] != 0) then PC = PC + Sign_extend(immediate) 若寄存器rx的值不为0,则跳转到目的地址执行;否则顺序执行下一条指令
BTEQZ immediate 01100000 immediate(8) if (T = 0) then PC = PC + Sign_extend(immediate) 若标志寄存器T的值为0,则跳转到目的地址执行;否则顺序执行下一条指令
BTNEQZ immediate 01100001 immediate(8) if (T != 0) then PC = PC + Sign_extend(immediate) 若标志寄存器T的值为不0,则跳转到目的地址执行;否则顺序执行下一条指令
CMP rx ry 11101 rx(3) ry(3) 01010 if (R[x] = R[y]) then T = 0; if (R[x] != R[y]) then T = 1 比较rx和ry的值,若相等,则给标志寄存器T置0;否则置1
CMPI rx immediate 11101 rx(3) immediate(8) if (R[x] = Sign_extend(immediate)) then T = 0; if (R[x] != Sign_extend(immediate)) then T = 1 将立即数immediate进行符号扩展后,与rx的值比较。若相等,则给标志寄存器T置0;否则置1
INT immediate 111110000000 immediate(4) 软件中断,immediate(unsigned)为中断号
JALR rx 11101 rx(3) 11000000 PC = R[x], RA = RPC 与JRRA配合用于子程序调用,RPC是子程序返回后应该执行的指令地址,即延时槽后一条指令的地址
JR rx 11101 rx(3) 00000000 PC = R[x] 程序无条件跳转到rx地址单元执行,用于长地址跳转
JRRA 1110100000100000 PC = RA 与JALR指令配合,完成从子程序返回功能
LI rx immediate 01101 rx(3) immediate(8) R[x] = Zero_Extend(immediate) 将立即数immediate的值(进行零扩展后)存储到寄存器rx中
LW rx ry immediate 10011 rx(3) ry(3) immediate(5) R[y] = MEM[R[x] + Sign_extend(immediate)] 从内存中读取数据到寄存器ry中,内存地址为寄存器rx的内容与立即数(进行符号扩展后)immediate之和
LW_SP rx immediate 10010 rx(3) immediate(8) LW_SP rx immediate R[x] = MEM[SP+Sign_extend(immediate)]
中,内存地址为寄存器SP的内容与立即数(进行符号扩展后)immediate之和 ||
MFIH rx 11110 rx(3) 00000000 R[x] = IH 将寄存器IH的值赋给寄存器rx
MFPC rx 11101 rx(3) 01000000 R[x] = PC 将寄存器PC的值赋给寄存器rx


新增一则回应

除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License