NationalSecurityAgency / ghidra

Ghidra is a software reverse engineering (SRE) framework
https://www.nsa.gov/ghidra
Apache License 2.0
51.08k stars 5.82k forks source link

Allow Different Instruction Sets for Different Memory Sections #510

Open NWPlayer123 opened 5 years ago

NWPlayer123 commented 5 years ago

It would be useful to define different instruction sets/processors for different parts in the Memory Layout (add another column or something). I bring this up because the Nintendo DS uses two different processors, ARM7 and ARM9, running simultaneously, and each work off their own memory section. ARM7 uses ARMv4T, and ARM9 uses ARMv5TE, and it would be tedious to have to work off two separate binaries. Also, as mentioned here, x86 BIOSes can have different instruction sets used.

bevanweiss commented 4 years ago

I agree, I don't think it would need to be an automatic detection or anything, but definitely assigning a different 'language' against certain memory ranges would be incredibly useful.

As mentioned by @NWPlayer123 for the Nintendo, the Playstation 3 has a similar system, it has a PowerPC architecture for it's PPU, and then some specialised vector processors (SPUs) which it also uses. The base address at which each SPU code starts can normally be identified manually, so if we could just divide the program addresses up into ranges it would really be handy.