- switch(op2)
- {
- case 0x00: strcpy(insn[i],"MFC1"); type=COP1; break;
- case 0x01: strcpy(insn[i],"DMFC1"); type=COP1; break;
- case 0x02: strcpy(insn[i],"CFC1"); type=COP1; break;
- case 0x04: strcpy(insn[i],"MTC1"); type=COP1; break;
- case 0x05: strcpy(insn[i],"DMTC1"); type=COP1; break;
- case 0x06: strcpy(insn[i],"CTC1"); type=COP1; break;
- case 0x08: strcpy(insn[i],"BC1"); type=FJUMP;
- switch((source[i]>>16)&0x3)
- {
- case 0x00: strcpy(insn[i],"BC1F"); break;
- case 0x01: strcpy(insn[i],"BC1T"); break;
- case 0x02: strcpy(insn[i],"BC1FL"); break;
- case 0x03: strcpy(insn[i],"BC1TL"); break;
- }
- break;
- case 0x10: strcpy(insn[i],"C1.S"); type=NI;
- switch(source[i]&0x3f)
- {
- case 0x00: strcpy(insn[i],"ADD.S"); type=FLOAT; break;
- case 0x01: strcpy(insn[i],"SUB.S"); type=FLOAT; break;
- case 0x02: strcpy(insn[i],"MUL.S"); type=FLOAT; break;
- case 0x03: strcpy(insn[i],"DIV.S"); type=FLOAT; break;
- case 0x04: strcpy(insn[i],"SQRT.S"); type=FLOAT; break;
- case 0x05: strcpy(insn[i],"ABS.S"); type=FLOAT; break;
- case 0x06: strcpy(insn[i],"MOV.S"); type=FLOAT; break;
- case 0x07: strcpy(insn[i],"NEG.S"); type=FLOAT; break;
- case 0x08: strcpy(insn[i],"ROUND.L.S"); type=FCONV; break;
- case 0x09: strcpy(insn[i],"TRUNC.L.S"); type=FCONV; break;
- case 0x0A: strcpy(insn[i],"CEIL.L.S"); type=FCONV; break;
- case 0x0B: strcpy(insn[i],"FLOOR.L.S"); type=FCONV; break;
- case 0x0C: strcpy(insn[i],"ROUND.W.S"); type=FCONV; break;
- case 0x0D: strcpy(insn[i],"TRUNC.W.S"); type=FCONV; break;
- case 0x0E: strcpy(insn[i],"CEIL.W.S"); type=FCONV; break;
- case 0x0F: strcpy(insn[i],"FLOOR.W.S"); type=FCONV; break;
- case 0x21: strcpy(insn[i],"CVT.D.S"); type=FCONV; break;
- case 0x24: strcpy(insn[i],"CVT.W.S"); type=FCONV; break;
- case 0x25: strcpy(insn[i],"CVT.L.S"); type=FCONV; break;
- case 0x30: strcpy(insn[i],"C.F.S"); type=FCOMP; break;
- case 0x31: strcpy(insn[i],"C.UN.S"); type=FCOMP; break;
- case 0x32: strcpy(insn[i],"C.EQ.S"); type=FCOMP; break;
- case 0x33: strcpy(insn[i],"C.UEQ.S"); type=FCOMP; break;
- case 0x34: strcpy(insn[i],"C.OLT.S"); type=FCOMP; break;
- case 0x35: strcpy(insn[i],"C.ULT.S"); type=FCOMP; break;
- case 0x36: strcpy(insn[i],"C.OLE.S"); type=FCOMP; break;
- case 0x37: strcpy(insn[i],"C.ULE.S"); type=FCOMP; break;
- case 0x38: strcpy(insn[i],"C.SF.S"); type=FCOMP; break;
- case 0x39: strcpy(insn[i],"C.NGLE.S"); type=FCOMP; break;
- case 0x3A: strcpy(insn[i],"C.SEQ.S"); type=FCOMP; break;
- case 0x3B: strcpy(insn[i],"C.NGL.S"); type=FCOMP; break;
- case 0x3C: strcpy(insn[i],"C.LT.S"); type=FCOMP; break;
- case 0x3D: strcpy(insn[i],"C.NGE.S"); type=FCOMP; break;
- case 0x3E: strcpy(insn[i],"C.LE.S"); type=FCOMP; break;
- case 0x3F: strcpy(insn[i],"C.NGT.S"); type=FCOMP; break;
- }
- break;
- case 0x11: strcpy(insn[i],"C1.D"); type=NI;
- switch(source[i]&0x3f)
- {
- case 0x00: strcpy(insn[i],"ADD.D"); type=FLOAT; break;
- case 0x01: strcpy(insn[i],"SUB.D"); type=FLOAT; break;
- case 0x02: strcpy(insn[i],"MUL.D"); type=FLOAT; break;
- case 0x03: strcpy(insn[i],"DIV.D"); type=FLOAT; break;
- case 0x04: strcpy(insn[i],"SQRT.D"); type=FLOAT; break;
- case 0x05: strcpy(insn[i],"ABS.D"); type=FLOAT; break;
- case 0x06: strcpy(insn[i],"MOV.D"); type=FLOAT; break;
- case 0x07: strcpy(insn[i],"NEG.D"); type=FLOAT; break;
- case 0x08: strcpy(insn[i],"ROUND.L.D"); type=FCONV; break;
- case 0x09: strcpy(insn[i],"TRUNC.L.D"); type=FCONV; break;
- case 0x0A: strcpy(insn[i],"CEIL.L.D"); type=FCONV; break;
- case 0x0B: strcpy(insn[i],"FLOOR.L.D"); type=FCONV; break;
- case 0x0C: strcpy(insn[i],"ROUND.W.D"); type=FCONV; break;
- case 0x0D: strcpy(insn[i],"TRUNC.W.D"); type=FCONV; break;
- case 0x0E: strcpy(insn[i],"CEIL.W.D"); type=FCONV; break;
- case 0x0F: strcpy(insn[i],"FLOOR.W.D"); type=FCONV; break;
- case 0x20: strcpy(insn[i],"CVT.S.D"); type=FCONV; break;
- case 0x24: strcpy(insn[i],"CVT.W.D"); type=FCONV; break;
- case 0x25: strcpy(insn[i],"CVT.L.D"); type=FCONV; break;
- case 0x30: strcpy(insn[i],"C.F.D"); type=FCOMP; break;
- case 0x31: strcpy(insn[i],"C.UN.D"); type=FCOMP; break;
- case 0x32: strcpy(insn[i],"C.EQ.D"); type=FCOMP; break;
- case 0x33: strcpy(insn[i],"C.UEQ.D"); type=FCOMP; break;
- case 0x34: strcpy(insn[i],"C.OLT.D"); type=FCOMP; break;
- case 0x35: strcpy(insn[i],"C.ULT.D"); type=FCOMP; break;
- case 0x36: strcpy(insn[i],"C.OLE.D"); type=FCOMP; break;
- case 0x37: strcpy(insn[i],"C.ULE.D"); type=FCOMP; break;
- case 0x38: strcpy(insn[i],"C.SF.D"); type=FCOMP; break;
- case 0x39: strcpy(insn[i],"C.NGLE.D"); type=FCOMP; break;
- case 0x3A: strcpy(insn[i],"C.SEQ.D"); type=FCOMP; break;
- case 0x3B: strcpy(insn[i],"C.NGL.D"); type=FCOMP; break;
- case 0x3C: strcpy(insn[i],"C.LT.D"); type=FCOMP; break;
- case 0x3D: strcpy(insn[i],"C.NGE.D"); type=FCOMP; break;
- case 0x3E: strcpy(insn[i],"C.LE.D"); type=FCOMP; break;
- case 0x3F: strcpy(insn[i],"C.NGT.D"); type=FCOMP; break;
- }
- break;
- case 0x14: strcpy(insn[i],"C1.W"); type=NI;
- switch(source[i]&0x3f)
- {
- case 0x20: strcpy(insn[i],"CVT.S.W"); type=FCONV; break;
- case 0x21: strcpy(insn[i],"CVT.D.W"); type=FCONV; break;
- }
- break;
- case 0x15: strcpy(insn[i],"C1.L"); type=NI;
- switch(source[i]&0x3f)
- {
- case 0x20: strcpy(insn[i],"CVT.S.L"); type=FCONV; break;
- case 0x21: strcpy(insn[i],"CVT.D.L"); type=FCONV; break;
- }
- break;
- }