Documentation ¶
Overview ¶
Provides support for dealing with CVM assembly instructions (e.g., disassembling them).
Index ¶
Constants ¶
const ( Numbers = "1234567890" // characters representing any decimal number HexadecimalNumbers = Numbers + "aAbBcCdDeEfF" // characters representing any hexadecimal Alpha = "abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUWVXYZ" // characters representing alphanumeric )
Variables ¶
This section is empty.
Functions ¶
func Disassemble ¶
Return all disassembled CVM instructions in human-readable format.
func HasInferOp ¶
func Lex ¶
lex lexes the program by name with the given source. It returns a channel on which the tokens are delivered.
func NewInstructionIterator ¶
func NewInstructionIterator(code []byte) *instructionIterator
Create a new instruction iterator.
func PrintDisassembled ¶
Pretty-print all disassembled CVM instructions to stdout.
Types ¶
type Compiler ¶
type Compiler struct {
// contains filtered or unexported fields
}
Compiler contains information about the parsed source and holds the tokens for the program.
func NewCompiler ¶
newCompiler returns a new allocated compiler.
func (*Compiler) Compile ¶
Compile compiles the current tokens and returns a binary string that can be interpreted by the CVM and an error if it failed.
compile is the second stage in the compile phase which compiles the tokens to CVM instructions.
func (*Compiler) Feed ¶
func (c *Compiler) Feed(ch <-chan token)
Feed feeds tokens in to ch and are interpreted by the compiler.
feed is the first pass in the compile stage as it collects the used labels in the program and keeps a program counter which is used to determine the locations of the jump dests. The labels can than be used in the second stage to push labels and determine the right position.