-
Notifications
You must be signed in to change notification settings - Fork 0
Read symbolic value at symbolic address #152
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
base: master
Are you sure you want to change the base?
Conversation
…WB operations. Update test data to include symbolic index value handling in storeBytes. Adjust formatting for clarity.
…ing a boolean wrapper for symbolic writes. This update includes detailed explanations of termination control, reordering for optimization, and write consolidation strategies. Adjusted comments for clarity and improved documentation.
20bd897
to
8c9abdd
Compare
rule pickFront(PICK, #WB(_, _, _, _, B:SparseBytes)) => pickFront(PICK, B) | ||
// omit this condition to make it easy to simplify: requires 0 =/=Int I |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would require PICK <=Int I
or NUM ==Int 0
I think.
rule dropFront(DROP, #WB(FLAG, I, V, NUM, B:SparseBytes)) => #WB(FLAG, I -Int DROP, V, NUM, dropFront(DROP, B)) | ||
[simplification(45)] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider DROP > I
. In that case, WriteBytes(I -Int DROP, ...)
is .SparseBytes
.
[simplification(45)] | ||
|
||
|
||
syntax SparseBytes ::= SparseBytes ">>SparseBytes" Int [function, total] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please document the intended semantics of this symbol.
|
||
syntax SparseBytes ::= SparseBytes ">>SparseBytes" Int [function, total] | ||
// It's not correct, but just make this function total | ||
rule B >>SparseBytes _ => B [concrete] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks dangerous, Why is this rule necessary?
rule B >>SparseBytes _ => B [concrete] | ||
rule #WB(FLAG, I, V, NUM, B:SparseBytes) >>SparseBytes SHIFT => #WB(FLAG, I, (V &Int (2 ^Int (NUM *Int 8)) -Int 1) >>Int (SHIFT *Int 8), NUM, B >>SparseBytes SHIFT) | ||
requires SHIFT >=Int 0 [simplification(45), preserves-definedness] | ||
rule B:SparseBytes >>SparseBytes _ => B [simplification] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This also looks unsound.
No description provided.