MCPcopy Create free account
hub / github.com/aldelaro5/dolphin-memory-engine / Opcode19Handler

Method Opcode19Handler

Source/Common/PPC/PowerPCDisassembler.cpp:831–887  ·  view source on GitHub ↗

handles all for opcode 19

Source from the content-addressed store, hash-verified

829
830// handles all for opcode 19
831std::string PowerPCDisassembler::Opcode19Handler(const u32 binary)
832{
833 u32 d = ValueAtBits(binary, 6, 5);
834 u32 a = ValueAtBits(binary, 11, 5);
835 u32 b = ValueAtBits(binary, 16, 5);
836
837 u32 ext_10 = ValueAtBits(binary, 21, 10);
838
839 if (ext_10 != 16 && ext_10 != 528 && ((binary & 1) == 1))
840 return ILL(binary);
841
842 switch (ext_10)
843 {
844 case 0:
845 if ((b == 0) && ((d & 3) == 0) && ((a & 3) == 0))
846 return "mcrf " + Alias(d >> 2, "cr") + ", " + Alias(a >> 2, "cr");
847 return ILL(binary);
848 case 16:
849 return Opcode19HandlerExt16(binary, "lr");
850 case 33:
851 if (a == b)
852 return "crnot " + TS(d) + ", " + TS(a);
853 return "crnor " + TS(d) + ", " + TS(a) + ", " + TS(b);
854 case 50:
855 if (binary == 0x4c000064)
856 return "rfi";
857 return ILL(binary);
858 case 129:
859 return "crandc " + TS(d) + ", " + TS(a) + ", " + TS(b);
860 case 150:
861 if (binary == 0x4c00012c)
862 return "isync";
863 return ILL(binary);
864 case 193:
865 if (a == b)
866 return "crclr " + TS(d) + ", " + TS(a);
867 return "crxor " + TS(d) + ", " + TS(a) + ", " + TS(b);
868 case 225:
869 return "crnand " + TS(d) + ", " + TS(a) + ", " + TS(b);
870 case 257:
871 return "crand " + TS(d) + ", " + TS(a) + ", " + TS(b);
872 case 289:
873 if (a == b)
874 return "crset " + TS(d) + ", " + TS(a);
875 return "creqv " + TS(d) + ", " + TS(a) + ", " + TS(b);
876 case 417:
877 return "crorc " + TS(d) + ", " + TS(a) + ", " + TS(b);
878 case 449:
879 if (a == b)
880 return "crmove " + TS(d) + ", " + TS(a);
881 return "cror " + TS(d) + ", " + TS(a) + ", " + TS(b);
882 case 528:
883 return Opcode19HandlerExt16(binary, "ctr");
884 default:
885 return ILL(binary);
886 }
887}
888

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected