I'm having some difficulties disassembling an arcompact program with IDAPro. The program has a large number of code banks/overlays and a rather overused manager that can branch to any function in any code bank. This is further complicated by use of relative addresses for all normal branches and absolute addresses for all managed branches.

I tried putting each code bank in its own segment as recommended, but can't get IDAPro to put two segments at the same address when the processor is set to arcompact.

In the past when I've encountered this I've either put the code banks at random addresses and created manual references to the banks or written a script to adjust all addresses used. Neither of these seem to me a good option given the manager and addressing scheme. Anyone have any ideas for a work around or am I just missing something in IDA?

1 Answer 1


Within the IDA SDK there is a lot of flexibility (albeit lacking in documentation). You are probably going to have to write your own plug-in, or you might have to make your own loader, and, or modify an existing processor module.

Probably need to do this in C/C++ but maybe you could do it in Python. See the folders "loader" and "module" from the SDK folder for more info and examples.

Maybe this processor is not popular enough for people to have published much on it yet and you'll have to be the first.

Also try asking the same question on the official hex-rays forum.

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.