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

Use something besides Crucible type Nat for LLVM pointer block IDs #404

Open
brianhuffman opened this issue Jan 14, 2020 · 0 comments
Open

Comments

@brianhuffman
Copy link
Contributor

Currently the block component of a Crucible/LLVM pointer consists of an expression of type Nat. The problem is that this is a type with too many operations: For example we should never have a pointer whose block ID is an expression involving natural number addition or multiplication.

The only operations that we need on Crucible/LLVM block IDs are literals, muxes, and equality comparisons. If we represent block IDs with a type that supports only these operations, then it may be possible to implement some other pointer operations or memory model operations more efficiently, because each operation would always be able to view a symbolic block ID as a mux tree of literals.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants