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

Method opcode4Handler

Source/Common/PPC/PowerPCDisassembler.cpp:327–495  ·  view source on GitHub ↗

handles all for opcode 4

Source from the content-addressed store, hash-verified

325
326// handles all for opcode 4
327std::string PowerPCDisassembler::opcode4Handler(const u32 binary)
328{
329 u32 d = ValueAtBits(binary, 6, 5);
330 u32 a = ValueAtBits(binary, 11, 5);
331 u32 b = ValueAtBits(binary, 16, 5);
332 u32 c = ValueAtBits(binary, 21, 5);
333
334 u32 w = ValueAtBits(binary, 21, 1);
335 u32 i = ValueAtBits(binary, 22, 3);
336
337 u32 ext_5 = ValueAtBits(binary, 26, 5);
338 u32 ext_6 = ValueAtBits(binary, 25, 6);
339 u32 ext_10 = ValueAtBits(binary, 21, 10);
340
341 switch (ext_5)
342 {
343 case 0:
344 switch (ext_10)
345 {
346 case 0:
347 if (d >> 2 != 0)
348 {
349 return "ps_cmpu0 " + Alias(d >> 2, "cr") + ", " + Alias(a, "p") + ", " + Alias(b, "p");
350 }
351 return "ps_cmpu0 " + Alias(a, "p") + ", " + Alias(b, "p");
352 case 32:
353 if (d >> 2 != 0)
354 {
355 return "ps_cmpo0 " + Alias(d >> 2, "cr") + ", " + Alias(a, "p") + ", " + Alias(b, "p");
356 }
357 return "ps_cmpo0 " + Alias(a, "p") + ", " + Alias(b, "p");
358 case 64:
359 if (d >> 2 != 0)
360 {
361 return "ps_cmpu1 " + Alias(d >> 2, "cr") + ", " + Alias(a, "p") + ", " + Alias(b, "p");
362 }
363 return "ps_cmpu1 " + Alias(a, "p") + ", " + Alias(b, "p");
364 case 96:
365 if (d >> 2 != 0)
366 {
367 return "ps_cmpo1 " + Alias(d >> 2, "cr") + ", " + Alias(a, "p") + ", " + Alias(b, "p");
368 }
369 return "ps_cmpo1 " + Alias(a, "p") + ", " + Alias(b, "p");
370 default:
371 break;
372 }
373 return "ps_0 ---";
374 case 1:
375 return "ps_1 ---";
376 case 2:
377 return "ps_2 ---";
378 case 3:
379 return "ps_3 ---";
380 case 4:
381 return "ps_4 ---";
382 case 5:
383 return "ps_5 ---";
384 case 6:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected