nevillegrech / gigahorse-toolchain

A binary lifter and analysis framework for Ethereum smart contracts
Other
295 stars 61 forks source link

Support for memory structs, various small fixes and optimizations #48

Closed sifislag closed 1 year ago

sifislag commented 1 year ago

This PR mainly introduces support for in memory structs.

Their main interface is these 3 relations added to the memory modeling API:

.decl StructAllocation(mstore: Statement, structBase: Variable, wordWidth: number)
.decl StructLoad(mload: Statement, structBase: Variable, wordOffset: number, loadedVar: Variable)
.decl StructStore(mstore: Statement, structBase: Variable, wordOffset: number, loadedVar: Variable)