I'm writing an Idapython loader script to help reverse-engineer the firmware on an embedded system with a 68000 processor.
Unfortunately I can't get a copy of the original C compiler used in order to build FLIRT signatures, but I would like to use Idapython to give IDA hints about some of the optimisations it's done.
As an example - the compiler often does things like this:
MOVEA.L #sub_1234, a4
...
JSR (a4)
The optimisation is, it's using an address register to hold the address of the function, which saves code space when one function is called several times.
I think I can figure out how to search for these patterns in the code -- but how can I tell IDA that "(a4)" is really a reference to sub_1234?