What are some some tracing disassemblers for the Z80? I.e., disassemblers that will trace through the code and disassemble as instructions only the areas it traces through, leaving the rest as data. (This question and its answers do not discuss tracing, which is a key criterion for me.)
Note that I'm disassembling native assembly language here, not code from a high-level language compiler.
Ideally it would also provide something that would let me mark particular functions that take data after a call
instruction and return past the data.
I ask because I'm currently reverse-engineering an old CP/M program (dating from 1981) that makes heavy use of arguments to subroutines as data after the call
, where the subroutine then updates the return address to after those data bytes before returning.
Ideally I'd like a command-line disassembler that runs on Unix, but I'm open to ones that run on other systems, or even use a GUI.
In your answer, if you know the details, it would be good to give a little information about the disassembler. For example, is it command-line- or GUI-based? What platforms does it run on? Are the annotation files in a text format that can be edited, or do you need to use that program's editor?