On 1/11/2017 10:48 AM, dwight wrote:
My disassemblers always make a list and count of addresses accessed

by any non-indirect reference. If I see a blank line in the code,

without any references, I get suspicious.

How can the code execute this location if it is never referenced??

I can then tell my assembler to treat that location differently.
The disassembler we developed would make lists of addresses that were referenced in the code by other than control change instructions. That flag when referenced when the disassembler made one of its passes would favor making the field a data definition based on the instruction operation vs. making it a disassembly of an opcode.

Our disassembler used and constructed a master symbol table that could be referenced to the system symbols, which in this case would be blank. But we could pre-seed the symbol table with defines, and they would take precedence over the dynamic ones from the disassembler's work. This way as other said, you could manually analyzed and re-run the disassembler as you guess functions, and the symbols would propagate thru the resulting disassembly would get more and more clear with re-running.

I've not seen many that can do what the Pick disassembler could do (not a Pick product, but ran on Pick with compatibility to that assembler) as easily as ours could. Sounds a lot like dwight did this though.

thanks
Jim

Reply via email to