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

emul-branch: move branch logic in its own category #512

Merged
merged 1 commit into from
Oct 31, 2024
Merged

Conversation

naure
Copy link
Collaborator

@naure naure commented Oct 31, 2024

Branch instructions are different than Compute in that they don’t write rd.

Useful for #245.

@matthiasgoergens
Copy link
Collaborator

Branch instructions are different than Compute in that they don’t write rd.

Well, that, and they mess with the 'pc' (program counter).

};

let new_pc = if taken {
pc.wrapping_add(decoded.imm_b())
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could change this to something like:

let new_pc = pc.wrapping_add(if taken { decoded.imm_b() } else { WORD_SIZE })

Btw, in my old VM we let the decoder change all the branches from relative addressing to absolute addressing, and forbid having executable code in the last four bytes, so we didn't have to worry about wrap-around for branches.

(If you are happy to forbid a few more kb of memory for execution, you can leave the relative addressing in, but still not worry about wrap-around.)

Wrap-around ain't a problem for the emulator, only for the constraints. See the discussion we had about memory.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just didn’t want to change any behavior in this PR.

Indeed, wrap-around by WORD_SIZE increment is not supported (unsatisfiable).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, preserving behaviour in this PR is a good idea. I was talking more generally, but unfortunately didn't make that clear. Sorry.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you be able to make a follow up PR with the changes we discussed perhaps?

Copy link
Collaborator

@matthiasgoergens matthiasgoergens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@naure naure merged commit 3a6ddcd into master Oct 31, 2024
6 checks passed
@naure naure deleted the emul-branch branch October 31, 2024 13:03
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

Successfully merging this pull request may close these issues.

2 participants