handles all for opcode 4
| 325 | |
| 326 | // handles all for opcode 4 |
| 327 | std::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: |
nothing calls this directly
no outgoing calls
no test coverage detected