1
0

Cycle states

This commit is contained in:
Aiden
2026-05-25 13:54:34 +10:00
parent 5ad90ade49
commit 4649cf530f
8 changed files with 20317 additions and 2554 deletions

View File

@@ -4,6 +4,7 @@ import argparse
from pathlib import Path
from .analysis import build_call_graph, collect_labels, linear_sweep, trace
from .cycles import annotate_cycles
from .data_analysis import analyze_unreached_data
from .decoder import H8536Decoder
from .formatting import parse_int
@@ -31,6 +32,7 @@ def main() -> int:
parser.add_argument("--entry", type=parse_int, action="append", default=[], help="extra entry point to trace")
parser.add_argument("--br", type=parse_int, default=None, help="optional BR value for @aa:8 short absolute operands")
parser.add_argument("--linear", action="store_true", help="linear-sweep the selected range instead of tracing from vectors")
parser.add_argument("--cycles", action="store_true", help="append Appendix A cycle estimates to assembly comments")
parser.add_argument("--callgraph-dot", type=Path, default=None, help="optional Graphviz DOT call graph output")
args = parser.parse_args()
@@ -60,6 +62,7 @@ def main() -> int:
else:
instructions = trace(decoder, starts, args.start, end)
labels.update(collect_labels(instructions.values(), vectors))
annotate_cycles(instructions, args.mode)
data_candidates = analyze_unreached_data(rom, instructions, args.start, end)
call_graph = build_call_graph(instructions, vectors, labels)
@@ -75,6 +78,7 @@ def main() -> int:
traced=not args.linear,
dtc_vectors=dtc_vectors,
data_candidates=data_candidates,
show_cycles=args.cycles,
),
encoding="utf-8",
)