Modules
Structs
Identifies a sequential block of instructions within the original
bytecode sequence. That is, a sequence does not contain a jump
destination (other than at the very start), and ends either with a
terminating instruction (e.g.
RETURN
, REVERT
, etc) or an
unconditional branch (to another block).Represents a sequence of zero or more bytecodes which can be
turned, for example, into a hex string. Likewise, they can be
decompiled or further optimised.
Identifies all contiguous code blocks within the bytecode program.
Here, a block is a sequence of bytecodes terminated by either
STOP
, REVERT
, RETURN
or JUMP
. Observe that a JUMPDEST
can only appear as the first instruction of a block. In fact,
every reachable block (except the root block) begins with a
JUMPDEST
.Used to simplify calculation of label offsets.
Enums
Constants
Defines the set of tokens which are considered to identify
arithmetic comparators (e.g.
<
, <=
, ==
, etc).Defines the set of tokens which are considered to identify
arithmetic operators (e.g.
+
, -
, *
, etc).Defines the set of tokens which are considered to identify logical
connectives (e.g.
&&
, ||
, etc).Traits
An abstract state provides information about the possible states
of the EVM at a given point.
Provides a default disassembly pipeline for standard types
(e.g. string slices, byte slices, etc).
A simple trait allowing something to be converted from a hex
string.
A simple trait allowing something to be converted into a hex
string.