Chromium Code Reviews| Index: runtime/vm/disassembler_mips.cc |
| =================================================================== |
| --- runtime/vm/disassembler_mips.cc (revision 20092) |
| +++ runtime/vm/disassembler_mips.cc (working copy) |
| @@ -229,6 +229,14 @@ |
| Format(instr, "divu 'rs, 'rt"); |
| break; |
| } |
| + case JALR: { |
| + Format(instr, "jalr'hint 'rd, 'rs"); |
| + break; |
| + } |
| + case JR: { |
| + Format(instr, "jr'hint 'rs"); |
| + break; |
| + } |
| case MFHI: { |
| Format(instr, "mfhi 'rd"); |
| break; |
| @@ -237,6 +245,38 @@ |
| Format(instr, "mflo 'rd"); |
| break; |
| } |
| + case MOVN: { |
| + Format(instr, "movn 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| + case MOVZ: { |
| + Format(instr, "movz 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| + case MULT: { |
| + Format(instr, "mult 'rs, 'rt"); |
| + break; |
| + } |
| + case MULTU: { |
| + Format(instr, "multu 'rs, 'rt"); |
| + break; |
| + } |
| + case NOR: { |
| + Format(instr, "nor 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| + case OR: { |
| + if (instr->RsField() == 0 && instr->RtField() == 0) { |
| + Format(instr, "mov 'rd 0"); |
|
Ivan Posva
2013/03/21 00:08:06
'rd, 0
zra
2013/03/21 15:49:08
Done.
|
| + } else if (instr->RsField() == R0) { |
| + Format(instr, "mov 'rd, 'rt"); |
| + } else if (instr->RtField() == R0) { |
| + Format(instr, "mov 'rd, 'rs"); |
| + } else { |
| + Format(instr, "or 'rd, 'rs, 'rt"); |
| + } |
| + break; |
| + } |
| case SLL: { |
| if ((instr->RdField() == R0) && |
| (instr->RtField() == R0) && |
| @@ -247,10 +287,54 @@ |
| } |
| break; |
| } |
| - case JR: { |
| - Format(instr, "jr'hint 'rs"); |
| + case SLLV: { |
| + Format(instr, "sllv 'rd, 'rt, 'rs"); |
| break; |
| } |
| + case SLT: { |
| + Format(instr, "slt 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| + case SLTU: { |
| + Format(instr, "sltu 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| + case SRA: { |
| + Format(instr, "sra 'rd, 'rt, 'sa"); |
| + break; |
| + } |
| + case SRAV: { |
| + Format(instr, "srav 'rd, 'rt, 'rs"); |
| + break; |
| + } |
| + case SRL: { |
| + if (instr->RsField() == 0) { |
| + Format(instr, "srl 'rd, 'rt, 'sa"); |
| + } else { |
| + Unknown(instr); |
| + } |
| + break; |
| + } |
| + case SRLV: { |
| + if (instr->SaField() == 0) { |
| + Format(instr, "srlv 'rd, 'rt, 'rs"); |
| + } else { |
| + Unknown(instr); |
| + } |
| + break; |
| + } |
| + case SUB: { |
| + Format(instr, "sub 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| + case SUBU: { |
| + Format(instr, "subu 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| + case XOR: { |
| + Format(instr, "xor 'rd, 'rs, 'rt"); |
| + break; |
| + } |
| default: { |
| Unknown(instr); |
| break; |