Crate evmil

source ·

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.

Type Definitions