[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Reverse engeneering the SMU (iMac G5, newer single-pro G5)



> Obviously, the return types on the functions and arguments and such are
> purely for example. This code only has one input, and no obvious outputs.
> I would guess (as did someone else) that this was originally objective-C
> code, and this is a very optimised form of a method call on an object.

Nah, this is just basic C++ method call :)

> It seems to be deliberately leaving r3 alone, which would make that an
> implicit first argument to the subroutine being called. The fact that the
> branch saves the link implies that it is a function of some sort. My guess
> is that r3 contains a pointer to the object, and the two loads are to
> get to the addresses of the methods, then to the correct method.

Yes, r3 is "this".

> Just as a note, r2 is sometimes used as a safe spot to store a pointer
> to the TOC or other global environment type stuff. Depending on the
> runtime environment of this snippet, it may be important that r2 is
> being used as one of the intermediate loads.

In this case, it's just the vtable pointer

Ben.




Reply to: