Skip to content

Commit

Permalink
Add a backend function for creating symbolic values representing larg…
Browse files Browse the repository at this point in the history
…e integers (#155)

* add _sym_build_integer_arbitrary_length function
* simplify _sym_build_integer_from_buffer function
  • Loading branch information
damienmaier authored Feb 4, 2024
1 parent 3a140b0 commit d04d5b4
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
1 change: 1 addition & 0 deletions runtime/RuntimeCommon.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ void _sym_initialize(void);
*/
SymExpr _sym_build_integer(uint64_t value, uint8_t bits);
SymExpr _sym_build_integer128(uint64_t high, uint64_t low);
SymExpr _sym_build_integer_from_buffer(void *buffer, unsigned num_bits);
SymExpr _sym_build_float(double value, int is_double);
SymExpr _sym_build_null_pointer(void);
SymExpr _sym_build_true(void);
Expand Down
6 changes: 6 additions & 0 deletions runtime/qsym_backend/Runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,12 @@ SymExpr _sym_build_integer128(uint64_t high, uint64_t low) {
return registerExpression(g_expr_builder->createConstant({128, words}, 128));
}

SymExpr _sym_build_integer_from_buffer(void *buffer, unsigned num_bits) {
assert(num_bits % 64 == 0);
return registerExpression(g_expr_builder->createConstant(
{num_bits, num_bits / 64, (uint64_t *)buffer}, num_bits));
}

SymExpr _sym_build_null_pointer() {
return registerExpression(
g_expr_builder->createConstant(0, sizeof(uintptr_t) * 8));
Expand Down

0 comments on commit d04d5b4

Please sign in to comment.