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