codegen

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2018 License: BSD-3-Clause Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxFuncParams      = 255   // index+1 must fit in uint8
	MaxFuncVars        = 8191  // index must fit in uint16; TODO
	MaxEntryParams     = 8     // param registers on x86-64
	MaxBranchTableSize = 32768 // TODO
)
View Source
const (
	OpcodeUnreachable       = Opcode(0x00)
	OpcodeNop               = Opcode(0x01)
	OpcodeBlock             = Opcode(0x02)
	OpcodeLoop              = Opcode(0x03)
	OpcodeIf                = Opcode(0x04)
	OpcodeElse              = Opcode(0x05)
	OpcodeEnd               = Opcode(0x0b)
	OpcodeBr                = Opcode(0x0c)
	OpcodeBrIf              = Opcode(0x0d)
	OpcodeBrTable           = Opcode(0x0e)
	OpcodeReturn            = Opcode(0x0f)
	OpcodeCall              = Opcode(0x10)
	OpcodeCallIndirect      = Opcode(0x11)
	OpcodeDrop              = Opcode(0x1a)
	OpcodeSelect            = Opcode(0x1b)
	OpcodeGetLocal          = Opcode(0x20)
	OpcodeSetLocal          = Opcode(0x21)
	OpcodeTeeLocal          = Opcode(0x22)
	OpcodeGetGlobal         = Opcode(0x23)
	OpcodeSetGlobal         = Opcode(0x24)
	OpcodeI32Load           = Opcode(0x28)
	OpcodeI64Load           = Opcode(0x29)
	OpcodeF32Load           = Opcode(0x2a)
	OpcodeF64Load           = Opcode(0x2b)
	OpcodeI32Load8S         = Opcode(0x2c)
	OpcodeI32Load8U         = Opcode(0x2d)
	OpcodeI32Load16S        = Opcode(0x2e)
	OpcodeI32Load16U        = Opcode(0x2f)
	OpcodeI64Load8S         = Opcode(0x30)
	OpcodeI64Load8U         = Opcode(0x31)
	OpcodeI64Load16S        = Opcode(0x32)
	OpcodeI64Load16U        = Opcode(0x33)
	OpcodeI64Load32S        = Opcode(0x34)
	OpcodeI64Load32U        = Opcode(0x35)
	OpcodeI32Store          = Opcode(0x36)
	OpcodeI64Store          = Opcode(0x37)
	OpcodeF32Store          = Opcode(0x38)
	OpcodeF64Store          = Opcode(0x39)
	OpcodeI32Store8         = Opcode(0x3a)
	OpcodeI32Store16        = Opcode(0x3b)
	OpcodeI64Store8         = Opcode(0x3c)
	OpcodeI64Store16        = Opcode(0x3d)
	OpcodeI64Store32        = Opcode(0x3e)
	OpcodeCurrentMemory     = Opcode(0x3f)
	OpcodeGrowMemory        = Opcode(0x40)
	OpcodeI32Const          = Opcode(0x41)
	OpcodeI64Const          = Opcode(0x42)
	OpcodeF32Const          = Opcode(0x43)
	OpcodeF64Const          = Opcode(0x44)
	OpcodeI32Eqz            = Opcode(0x45)
	OpcodeI32Eq             = Opcode(0x46)
	OpcodeI32Ne             = Opcode(0x47)
	OpcodeI32LtS            = Opcode(0x48)
	OpcodeI32LtU            = Opcode(0x49)
	OpcodeI32GtS            = Opcode(0x4a)
	OpcodeI32GtU            = Opcode(0x4b)
	OpcodeI32LeS            = Opcode(0x4c)
	OpcodeI32LeU            = Opcode(0x4d)
	OpcodeI32GeS            = Opcode(0x4e)
	OpcodeI32GeU            = Opcode(0x4f)
	OpcodeI64Eqz            = Opcode(0x50)
	OpcodeI64Eq             = Opcode(0x51)
	OpcodeI64Ne             = Opcode(0x52)
	OpcodeI64LtS            = Opcode(0x53)
	OpcodeI64LtU            = Opcode(0x54)
	OpcodeI64GtS            = Opcode(0x55)
	OpcodeI64GtU            = Opcode(0x56)
	OpcodeI64LeS            = Opcode(0x57)
	OpcodeI64LeU            = Opcode(0x58)
	OpcodeI64GeS            = Opcode(0x59)
	OpcodeI64GeU            = Opcode(0x5a)
	OpcodeF32Eq             = Opcode(0x5b)
	OpcodeF32Ne             = Opcode(0x5c)
	OpcodeF32Lt             = Opcode(0x5d)
	OpcodeF32Gt             = Opcode(0x5e)
	OpcodeF32Le             = Opcode(0x5f)
	OpcodeF32Ge             = Opcode(0x60)
	OpcodeF64Eq             = Opcode(0x61)
	OpcodeF64Ne             = Opcode(0x62)
	OpcodeF64Lt             = Opcode(0x63)
	OpcodeF64Gt             = Opcode(0x64)
	OpcodeF64Le             = Opcode(0x65)
	OpcodeF64Ge             = Opcode(0x66)
	OpcodeI32Clz            = Opcode(0x67)
	OpcodeI32Ctz            = Opcode(0x68)
	OpcodeI32Popcnt         = Opcode(0x69)
	OpcodeI32Add            = Opcode(0x6a)
	OpcodeI32Sub            = Opcode(0x6b)
	OpcodeI32Mul            = Opcode(0x6c)
	OpcodeI32DivS           = Opcode(0x6d)
	OpcodeI32DivU           = Opcode(0x6e)
	OpcodeI32RemS           = Opcode(0x6f)
	OpcodeI32RemU           = Opcode(0x70)
	OpcodeI32And            = Opcode(0x71)
	OpcodeI32Or             = Opcode(0x72)
	OpcodeI32Xor            = Opcode(0x73)
	OpcodeI32Shl            = Opcode(0x74)
	OpcodeI32ShrS           = Opcode(0x75)
	OpcodeI32ShrU           = Opcode(0x76)
	OpcodeI32Rotl           = Opcode(0x77)
	OpcodeI32Rotr           = Opcode(0x78)
	OpcodeI64Clz            = Opcode(0x79)
	OpcodeI64Ctz            = Opcode(0x7a)
	OpcodeI64Popcnt         = Opcode(0x7b)
	OpcodeI64Add            = Opcode(0x7c)
	OpcodeI64Sub            = Opcode(0x7d)
	OpcodeI64Mul            = Opcode(0x7e)
	OpcodeI64DivS           = Opcode(0x7f)
	OpcodeI64DivU           = Opcode(0x80)
	OpcodeI64RemS           = Opcode(0x81)
	OpcodeI64RemU           = Opcode(0x82)
	OpcodeI64And            = Opcode(0x83)
	OpcodeI64Or             = Opcode(0x84)
	OpcodeI64Xor            = Opcode(0x85)
	OpcodeI64Shl            = Opcode(0x86)
	OpcodeI64ShrS           = Opcode(0x87)
	OpcodeI64ShrU           = Opcode(0x88)
	OpcodeI64Rotl           = Opcode(0x89)
	OpcodeI64Rotr           = Opcode(0x8a)
	OpcodeF32Abs            = Opcode(0x8b)
	OpcodeF32Neg            = Opcode(0x8c)
	OpcodeF32Ceil           = Opcode(0x8d)
	OpcodeF32Floor          = Opcode(0x8e)
	OpcodeF32Trunc          = Opcode(0x8f)
	OpcodeF32Nearest        = Opcode(0x90)
	OpcodeF32Sqrt           = Opcode(0x91)
	OpcodeF32Add            = Opcode(0x92)
	OpcodeF32Sub            = Opcode(0x93)
	OpcodeF32Mul            = Opcode(0x94)
	OpcodeF32Div            = Opcode(0x95)
	OpcodeF32Min            = Opcode(0x96)
	OpcodeF32Max            = Opcode(0x97)
	OpcodeF32Copysign       = Opcode(0x98)
	OpcodeF64Abs            = Opcode(0x99)
	OpcodeF64Neg            = Opcode(0x9a)
	OpcodeF64Ceil           = Opcode(0x9b)
	OpcodeF64Floor          = Opcode(0x9c)
	OpcodeF64Trunc          = Opcode(0x9d)
	OpcodeF64Nearest        = Opcode(0x9e)
	OpcodeF64Sqrt           = Opcode(0x9f)
	OpcodeF64Add            = Opcode(0xa0)
	OpcodeF64Sub            = Opcode(0xa1)
	OpcodeF64Mul            = Opcode(0xa2)
	OpcodeF64Div            = Opcode(0xa3)
	OpcodeF64Min            = Opcode(0xa4)
	OpcodeF64Max            = Opcode(0xa5)
	OpcodeF64Copysign       = Opcode(0xa6)
	OpcodeI32WrapI64        = Opcode(0xa7)
	OpcodeI32TruncSF32      = Opcode(0xa8)
	OpcodeI32TruncUF32      = Opcode(0xa9)
	OpcodeI32TruncSF64      = Opcode(0xaa)
	OpcodeI32TruncUF64      = Opcode(0xab)
	OpcodeI64ExtendSI32     = Opcode(0xac)
	OpcodeI64ExtendUI32     = Opcode(0xad)
	OpcodeI64TruncSF32      = Opcode(0xae)
	OpcodeI64TruncUF32      = Opcode(0xaf)
	OpcodeI64TruncSF64      = Opcode(0xb0)
	OpcodeI64TruncUF64      = Opcode(0xb1)
	OpcodeF32ConvertSI32    = Opcode(0xb2)
	OpcodeF32ConvertUI32    = Opcode(0xb3)
	OpcodeF32ConvertSI64    = Opcode(0xb4)
	OpcodeF32ConvertUI64    = Opcode(0xb5)
	OpcodeF32DemoteF64      = Opcode(0xb6)
	OpcodeF64ConvertSI32    = Opcode(0xb7)
	OpcodeF64ConvertUI32    = Opcode(0xb8)
	OpcodeF64ConvertSI64    = Opcode(0xb9)
	OpcodeF64ConvertUI64    = Opcode(0xba)
	OpcodeF64PromoteF32     = Opcode(0xbb)
	OpcodeI32ReinterpretF32 = Opcode(0xbc)
	OpcodeI64ReinterpretF64 = Opcode(0xbd)
	OpcodeF32ReinterpretI32 = Opcode(0xbe)
	OpcodeF64ReinterpretI64 = Opcode(0xbf)
)
View Source
const (
	MaxImportParams = obj.StackReserve/obj.Word - 2
)

Variables

This section is empty.

Functions

func GenProgram

func GenProgram(m *module.M, load loader.L, entrySymbol string, entryArgs []uint64, startTrigger chan<- struct{})

Types

type Opcode

type Opcode byte

func (Opcode) String

func (op Opcode) String() (s string)

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL