So I far I have been using Snowman for PowerPC decompilation. It is bad though but better than nothing. However, right now it doesn't support floating point instructions. They are simply written down as inline assembly which is of course kinda useless since you already had that in the disassembly:

void RadiusFromBoundsSq() {
    __asm__("lfs f10, 8(r3)");
    __asm__("lfs f5, (r3)");
    __asm__("frsp f11, f10");
    __asm__("lfs f6, (r4)");
    __asm__("frsp f10, f5");
    __asm__("frsp f12, f6");
    __asm__("lfs f13, 4(r3)");
    __asm__("fabs f11, f11");
    __asm__("lfs f8, 4(r4)");
    __asm__("frsp f0, f13");
    __asm__("frsp f8, f8");
    __asm__("lfs f9, 8(r4)");
    __asm__("fabs f12, f12");
    __asm__("frsp f13, f9");
    __asm__("fabs f8, f8");
    __asm__("fabs f0, f0");
    __asm__("fabs f13, f13");
    __asm__("fabs f10, f10");
    __asm__("fsubs f7, f8, f0");
    __asm__("fsubs f9, f13, f11");
    __asm__("fsubs f6, f12, f10");
    __asm__("fsel f8, f7, f8, f0");
    __asm__("fsel f11, f9, f13, f11");
    __asm__("fsel f0, f6, f12, f10");
    __asm__("fmuls f13, f8, f8");
    __asm__("fmadds f7, f0, f0, f13");
    __asm__("fmadds f1, f11, f11, f7");

Is there any "better" plugin for this task besides HexRays?


1 Answer 1


These days it turns out that Ghidra was released which is a good alternative to IDA. Unlike IDA, Ghidra and its decompilers are free so we're lucky to also receive a PowerPC decompiler which is fairly powerful and it can handle floating point instructions as well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.