📄 mips.igen
字号:
101100,5.BASE,5.RT,16.OFFSET:NORMAL:64::SDL"sdl r<RT>, <OFFSET>(r<BASE>)"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{ check_u64 (SD_, instruction_0); do_store_left (SD_, AccessLength_DOUBLEWORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}101101,5.BASE,5.RT,16.OFFSET:NORMAL:64::SDR"sdr r<RT>, <OFFSET>(r<BASE>)"*mipsIII:*mipsIV:*mipsV:*mips64:*vr4100:*vr5000:{ check_u64 (SD_, instruction_0); do_store_right (SD_, AccessLength_DOUBLEWORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}101001,5.BASE,5.RT,16.OFFSET:NORMAL:32::SH"sh r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_store (SD_, AccessLength_HALFWORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}:function:::void:do_sll:int rt, int rd, int shift{ unsigned32 temp = (GPR[rt] << shift); TRACE_ALU_INPUT2 (GPR[rt], shift); GPR[rd] = EXTEND32 (temp); TRACE_ALU_RESULT (GPR[rd]);}000000,00000,5.RT,5.RD,5.SHIFT,000000:SPECIAL:32::SLLa"nop":RD == 0 && RT == 0 && SHIFT == 0"sll r<RD>, r<RT>, <SHIFT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*vr4100:*vr5000:*r3900:{ /* Skip shift for NOP, so that there won't be lots of extraneous trace output. */ if (RD != 0 || RT != 0 || SHIFT != 0) do_sll (SD_, RT, RD, SHIFT);}000000,00000,5.RT,5.RD,5.SHIFT,000000:SPECIAL:32::SLLb"nop":RD == 0 && RT == 0 && SHIFT == 0"ssnop":RD == 0 && RT == 0 && SHIFT == 1"sll r<RD>, r<RT>, <SHIFT>"*mips32:*mips64:{ /* Skip shift for NOP and SSNOP, so that there won't be lots of extraneous trace output. */ if (RD != 0 || RT != 0 || (SHIFT != 0 && SHIFT != 1)) do_sll (SD_, RT, RD, SHIFT);}:function:::void:do_sllv:int rs, int rt, int rd{ int s = MASKED (GPR[rs], 4, 0); unsigned32 temp = (GPR[rt] << s); TRACE_ALU_INPUT2 (GPR[rt], s); GPR[rd] = EXTEND32 (temp); TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,000100:SPECIAL:32::SLLV"sllv r<RD>, r<RT>, r<RS>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_sllv (SD_, RS, RT, RD);}:function:::void:do_slt:int rs, int rt, int rd{ TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]); GPR[rd] = ((signed_word) GPR[rs] < (signed_word) GPR[rt]); TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,101010:SPECIAL:32::SLT"slt r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_slt (SD_, RS, RT, RD);}:function:::void:do_slti:int rs, int rt, unsigned16 immediate{ TRACE_ALU_INPUT2 (GPR[rs], EXTEND16 (immediate)); GPR[rt] = ((signed_word) GPR[rs] < (signed_word) EXTEND16 (immediate)); TRACE_ALU_RESULT (GPR[rt]);}001010,5.RS,5.RT,16.IMMEDIATE:NORMAL:32::SLTI"slti r<RT>, r<RS>, <IMMEDIATE>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_slti (SD_, RS, RT, IMMEDIATE);}:function:::void:do_sltiu:int rs, int rt, unsigned16 immediate{ TRACE_ALU_INPUT2 (GPR[rs], EXTEND16 (immediate)); GPR[rt] = ((unsigned_word) GPR[rs] < (unsigned_word) EXTEND16 (immediate)); TRACE_ALU_RESULT (GPR[rt]);}001011,5.RS,5.RT,16.IMMEDIATE:NORMAL:32::SLTIU"sltiu r<RT>, r<RS>, <IMMEDIATE>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_sltiu (SD_, RS, RT, IMMEDIATE);}:function:::void:do_sltu:int rs, int rt, int rd{ TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]); GPR[rd] = ((unsigned_word) GPR[rs] < (unsigned_word) GPR[rt]); TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,101011:SPECIAL:32::SLTU"sltu r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_sltu (SD_, RS, RT, RD);}:function:::void:do_sra:int rt, int rd, int shift{ signed32 temp = (signed32) GPR[rt] >> shift; if (NotWordValue (GPR[rt])) Unpredictable (); TRACE_ALU_INPUT2 (GPR[rt], shift); GPR[rd] = EXTEND32 (temp); TRACE_ALU_RESULT (GPR[rd]);}000000,00000,5.RT,5.RD,5.SHIFT,000011:SPECIAL:32::SRA"sra r<RD>, r<RT>, <SHIFT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_sra (SD_, RT, RD, SHIFT);}:function:::void:do_srav:int rs, int rt, int rd{ int s = MASKED (GPR[rs], 4, 0); signed32 temp = (signed32) GPR[rt] >> s; if (NotWordValue (GPR[rt])) Unpredictable (); TRACE_ALU_INPUT2 (GPR[rt], s); GPR[rd] = EXTEND32 (temp); TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,000111:SPECIAL:32::SRAV"srav r<RD>, r<RT>, r<RS>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_srav (SD_, RS, RT, RD);}:function:::void:do_srl:int rt, int rd, int shift{ unsigned32 temp = (unsigned32) GPR[rt] >> shift; if (NotWordValue (GPR[rt])) Unpredictable (); TRACE_ALU_INPUT2 (GPR[rt], shift); GPR[rd] = EXTEND32 (temp); TRACE_ALU_RESULT (GPR[rd]);}000000,00000,5.RT,5.RD,5.SHIFT,000010:SPECIAL:32::SRL"srl r<RD>, r<RT>, <SHIFT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_srl (SD_, RT, RD, SHIFT);}:function:::void:do_srlv:int rs, int rt, int rd{ int s = MASKED (GPR[rs], 4, 0); unsigned32 temp = (unsigned32) GPR[rt] >> s; if (NotWordValue (GPR[rt])) Unpredictable (); TRACE_ALU_INPUT2 (GPR[rt], s); GPR[rd] = EXTEND32 (temp); TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,000110:SPECIAL:32::SRLV"srlv r<RD>, r<RT>, r<RS>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_srlv (SD_, RS, RT, RD);}000000,5.RS,5.RT,5.RD,00000,100010:SPECIAL:32::SUB"sub r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ if (NotWordValue (GPR[RS]) || NotWordValue (GPR[RT])) Unpredictable (); TRACE_ALU_INPUT2 (GPR[RS], GPR[RT]); { ALU32_BEGIN (GPR[RS]); ALU32_SUB (GPR[RT]); ALU32_END (GPR[RD]); /* This checks for overflow. */ } TRACE_ALU_RESULT (GPR[RD]);}:function:::void:do_subu:int rs, int rt, int rd{ if (NotWordValue (GPR[rs]) || NotWordValue (GPR[rt])) Unpredictable (); TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]); GPR[rd] = EXTEND32 (GPR[rs] - GPR[rt]); TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,100011:SPECIAL:32::SUBU"subu r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_subu (SD_, RS, RT, RD);}101011,5.BASE,5.RT,16.OFFSET:NORMAL:32::SW"sw r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*r3900:*vr5000:{ do_store (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}1110,ZZ!0!1!3,5.BASE,5.RT,16.OFFSET:NORMAL:32::SWCz"swc<ZZ> r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_store (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), COP_SW (ZZ, RT));}101010,5.BASE,5.RT,16.OFFSET:NORMAL:32::SWL"swl r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_store_left (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}101110,5.BASE,5.RT,16.OFFSET:NORMAL:32::SWR"swr r<RT>, <OFFSET>(r<BASE>)"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_store_right (SD_, AccessLength_WORD, GPR[BASE], EXTEND16 (OFFSET), GPR[RT]);}000000,000000000000000,5.STYPE,001111:SPECIAL:32::SYNC"sync":STYPE == 0"sync <STYPE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ SyncOperation (STYPE);}000000,20.CODE,001100:SPECIAL:32::SYSCALL"syscall %#lx<CODE>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ SignalException (SystemCall, instruction_0);}000000,5.RS,5.RT,10.CODE,110100:SPECIAL:32::TEQ"teq r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] == (signed_word) GPR[RT]) SignalException (Trap, instruction_0);}000001,5.RS,01100,16.IMMEDIATE:REGIMM:32::TEQI"teqi r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] == (signed_word) EXTEND16 (IMMEDIATE)) SignalException (Trap, instruction_0);}000000,5.RS,5.RT,10.CODE,110000:SPECIAL:32::TGE"tge r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] >= (signed_word) GPR[RT]) SignalException (Trap, instruction_0);}000001,5.RS,01000,16.IMMEDIATE:REGIMM:32::TGEI"tgei r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] >= (signed_word) EXTEND16 (IMMEDIATE)) SignalException (Trap, instruction_0);}000001,5.RS,01001,16.IMMEDIATE:REGIMM:32::TGEIU"tgeiu r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((unsigned_word) GPR[RS] >= (unsigned_word) EXTEND16 (IMMEDIATE)) SignalException (Trap, instruction_0);}000000,5.RS,5.RT,10.CODE,110001:SPECIAL:32::TGEU"tgeu r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((unsigned_word) GPR[RS] >= (unsigned_word) GPR[RT]) SignalException (Trap, instruction_0);}000000,5.RS,5.RT,10.CODE,110010:SPECIAL:32::TLT"tlt r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] < (signed_word) GPR[RT]) SignalException (Trap, instruction_0);}000001,5.RS,01010,16.IMMEDIATE:REGIMM:32::TLTI"tlti r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] < (signed_word) EXTEND16 (IMMEDIATE)) SignalException (Trap, instruction_0);}000001,5.RS,01011,16.IMMEDIATE:REGIMM:32::TLTIU"tltiu r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((unsigned_word) GPR[RS] < (unsigned_word) EXTEND16 (IMMEDIATE)) SignalException (Trap, instruction_0);}000000,5.RS,5.RT,10.CODE,110011:SPECIAL:32::TLTU"tltu r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((unsigned_word) GPR[RS] < (unsigned_word) GPR[RT]) SignalException (Trap, instruction_0);}000000,5.RS,5.RT,10.CODE,110110:SPECIAL:32::TNE"tne r<RS>, r<RT>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] != (signed_word) GPR[RT]) SignalException (Trap, instruction_0);}000001,5.RS,01110,16.IMMEDIATE:REGIMM:32::TNEI"tnei r<RS>, <IMMEDIATE>"*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:{ if ((signed_word) GPR[RS] != (signed_word) EXTEND16 (IMMEDIATE)) SignalException (Trap, instruction_0);}:function:::void:do_xor:int rs, int rt, int rd{ TRACE_ALU_INPUT2 (GPR[rs], GPR[rt]); GPR[rd] = GPR[rs] ^ GPR[rt]; TRACE_ALU_RESULT (GPR[rd]);}000000,5.RS,5.RT,5.RD,00000,100110:SPECIAL:32::XOR"xor r<RD>, r<RS>, r<RT>"*mipsI:*mipsII:*mipsIII:*mipsIV:*mipsV:*mips32:*mips64:*vr4100:*vr5000:*r3900:{ do_xor (SD_, RS, RT, RD);}:function:::void:do_xori:int rs, int rt, unsigned16 immediate{ TRACE_ALU_INPUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -