Data flow improvements in pseudo code generator
This commit is contained in:
@@ -34,10 +34,13 @@ To turn the structured decompile output into conservative C-like pseudocode:
|
||||
- Flags/manual-annotates TEMP-register access ordering for FRT and A/D 16-bit peripheral registers.
|
||||
- Scans unreached ROM ranges for ASCII strings and pointer-table candidates.
|
||||
- Emits function summaries and a direct-call graph in JSON, with optional Graphviz DOT output.
|
||||
- Tracks conservative per-basic-block register/control-register dataflow in JSON and comments known value changes.
|
||||
- Discovers RAM/external/global symbols from memory references and pointer tables, including read/write counts and xrefs.
|
||||
- Adds indirect `JSR/JMP @Rn` flow hints when a nearby indexed word load looks like a pointer table dispatch.
|
||||
- Adds Appendix A cycle estimates to JSON and can append them to ASM comments.
|
||||
- Summarizes straight-line block timing and backward-branch loop timing when requested.
|
||||
- Handles the E-clock transfer instructions `MOVFPE` and `MOVTPE`.
|
||||
- Generates a separate C-like pseudocode view from the JSON, preserving labels, calls, branches, register names, comments, and optional cycle notes.
|
||||
- Generates a separate C-like pseudocode view from the JSON, preserving labels, calls, branches, register names, inferred symbols, metadata comments, optional cycle notes, and simple structured `if`/`do while` patterns.
|
||||
|
||||
The generated listing is written to:
|
||||
|
||||
@@ -76,6 +79,7 @@ python h8536_pseudocode.py --help
|
||||
- `--no-asm`: omit original assembly text from pseudocode line comments.
|
||||
- `--no-addresses`: omit instruction addresses from pseudocode line comments.
|
||||
- `--cycles`: include cycle estimates from the JSON.
|
||||
- `--no-structure`: preserve label/goto output instead of simple structured `if`/loop output.
|
||||
- `--max-functions N`: emit only the first `N` functions for focused review.
|
||||
|
||||
## Code Layout
|
||||
@@ -90,6 +94,9 @@ python h8536_pseudocode.py --help
|
||||
- `h8536/data_analysis.py`: unreached string and pointer-table candidate scans.
|
||||
- `h8536/memory.py`: manual-derived memory-region tagging.
|
||||
- `h8536/cycles.py`: Appendix A cycle estimate tables.
|
||||
- `h8536/dataflow.py`: conservative register/control-register value tracking.
|
||||
- `h8536/symbols.py`: RAM/external/global symbol discovery from references and data tables.
|
||||
- `h8536/indirect.py`: indirect call/jump and pointer-table dispatch hints.
|
||||
- `h8536/timing.py`: block and loop cycle summaries.
|
||||
- `h8536/sci.py`: SCI setup tracking and baud inference.
|
||||
- `h8536/peripheral_access.py`: FRT/A-D TEMP-register access analysis.
|
||||
|
||||
Reference in New Issue
Block a user