refactor(cpu): add unknown opcode tracking infrastructure#3
Merged
Conversation
This is a minimal, observability-only change that enables z88headless to collect and report unknown opcodes without modifying core emulation semantics. Changes: - Add UnknownOpcode struct to track PC and opcode byte - Add m_unknownOpcodes vector to accumulate all unknown opcodes - Add m_traceUnknown flag for runtime control of output - Add setTraceUnknown() public method for controlling trace - Add unknownOpcodes() getter for accessing collected data - Add recordUnknown() private method to handle both tracking and optional printing - Refactor CB prefix unknown handling to use recordUnknown() - Refactor ED prefix unknown handling to use recordUnknown() Rationale: - No opcode behavior changes: all dispatch logic unchanged, only tracking added - No emulation semantics changes: instruction execution identical to before - Unknown opcodes are passively collected; printing is opt-in via setTraceUnknown() - This enables z88headless to provide detailed diagnostics for regression testing - Memory overhead is minimal (two bytes per unknown opcode encountered)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a minimal, observability-only change that enables z88headless to collect and report unknown opcodes without modifying core emulation semantics.
Changes:
Rationale:
Summary
Describe clearly what this PR changes.
Checklist
Technical notes
Explain implementation details, tradeoffs or TODOs.