Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Redesign disassembly main loop #2

Open
logic opened this issue Apr 11, 2011 · 0 comments
Open

Redesign disassembly main loop #2

logic opened this issue Apr 11, 2011 · 0 comments
Assignees

Comments

@logic
Copy link
Owner

logic commented Apr 11, 2011

Redesign the disassembly main loop.

Today, the main loop tracks instruction-by-instruction state (registers, upcoming delayed branches) across an entire consecutive sequence of code, until no further disassembly is reasonable (ie. a hard branch is encountered).

In order to parallelize disassembly, we need to be able to operate on an instruction-by-instruction basis without shared state; the work queue is initially seeded with known locations from the interrupt vector table as today, but rather than branch targets being the only things added to the queue, each "next instruction" is added, ie. an instruction is disassembled and added to the segment, any branch targets of the instruction are added to the work queue, and then the next instruction is added to the queue (unless it's not appropriate, such as when the end of a routine is reached).

This will require the work queue to store not only targets and references, but register contents.

@ghost ghost assigned logic Apr 11, 2011
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant