jit

package
v0.0.0-...-9f8866d Latest Latest
Warning

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

Go to latest
Published: Jan 1, 2019 License: MPL-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	S       = uint32(unsafe.Sizeof(uint64(0)))
	VERBOSE = false
)
View Source
const SUPPORTED = true

Variables

View Source
var PAGESIZE = unix.Getpagesize()

Functions

func DeclArith

func DeclArith(envlen int) func(env *uint64)
  jit-compiled version of:

	func arith(n int) int {
		return ((((n*2+3)|4) &^ 5) ^ 6) / ((n & 2) | 1)
	}

func DeclSum

func DeclSum() func(arg int) int
  jit-compiled version of:

	func sum(n int) int {
		total := 0
		for i := 1; i <= n; i++ {
			total += i
		}
		return total
	}

Types

type Arg

type Arg interface {
	Const() bool
	Kind() reflect.Kind
	// contains filtered or unexported methods
}

type Asm

type Asm struct {
	// contains filtered or unexported fields
}

func (*Asm) Add

func (asm *Asm) Add(z Reg, a Arg) *Asm

%reg_z += a

func (*Asm) Alloc

func (asm *Asm) Alloc(z Reg) *Asm

func (*Asm) AllocLoad

func (asm *Asm) AllocLoad(z Reg, a Arg) *Asm

combined Alloc + Load

func (*Asm) And

func (asm *Asm) And(z Reg, a Arg) *Asm

%reg_z &= a

func (*Asm) Andnot

func (asm *Asm) Andnot(z Reg, a Arg) *Asm

%reg_z &^= a

func (*Asm) Asm

func (asm *Asm) Asm(args ...interface{}) *Asm

func (*Asm) Bytes

func (asm *Asm) Bytes(bytes ...uint8) *Asm

func (*Asm) Free

func (asm *Asm) Free(z Reg) *Asm

func (*Asm) Func

func (asm *Asm) Func() func(*uint64)

func (*Asm) Idx

func (asm *Asm) Idx(a *Var) *Asm

func (*Asm) Init

func (asm *Asm) Init() *Asm

func (*Asm) Init2

func (asm *Asm) Init2(saveStart, saveEnd uint16) *Asm

func (*Asm) Int16

func (asm *Asm) Int16(val int16) *Asm

func (*Asm) Int32

func (asm *Asm) Int32(val int32) *Asm

func (*Asm) Int64

func (asm *Asm) Int64(val int64) *Asm

func (*Asm) Load

func (asm *Asm) Load(dst Reg, src Arg) *Asm

func (*Asm) LoadConst

func (asm *Asm) LoadConst(dst Reg, val int64) *Asm

func (*Asm) Mul

func (asm *Asm) Mul(z Reg, a Arg) *Asm

%reg_z *= a

func (*Asm) Neg

func (asm *Asm) Neg(z Reg) *Asm

%reg_z = - %reg_z

func (*Asm) Not

func (asm *Asm) Not(z Reg) *Asm

%reg_z = ^ %reg_z

func (*Asm) Op

func (asm *Asm) Op(op Op, args ...interface{}) int

func (*Asm) Op1

func (asm *Asm) Op1(op Op, z Reg) *Asm

func (*Asm) Op2

func (asm *Asm) Op2(op Op, z Reg, a Arg) *Asm

func (*Asm) Or

func (asm *Asm) Or(z Reg, a Arg) *Asm

%reg_z |= a

func (*Asm) SDiv

func (asm *Asm) SDiv(z Reg, a Arg) *Asm

%reg_z /= a // signed division

func (*Asm) SRem

func (asm *Asm) SRem(z Reg, a Arg) *Asm

%reg_z %= a // signed remainder

func (*Asm) Store

func (asm *Asm) Store(dst *Var, src Arg) *Asm

func (*Asm) StoreFree

func (asm *Asm) StoreFree(z *Var, g Reg) *Asm

combined Store + Free

func (*Asm) Sub

func (asm *Asm) Sub(z Reg, a Arg) *Asm

%reg_z -= a

func (*Asm) UDiv

func (asm *Asm) UDiv(z Reg, a Arg) *Asm

%reg_z /= a // unsigned division

func (*Asm) URem

func (asm *Asm) URem(z Reg, a Arg) *Asm

%reg_z %= a // unsigned remainder

func (*Asm) Uint16

func (asm *Asm) Uint16(val uint16) *Asm

func (*Asm) Uint32

func (asm *Asm) Uint32(val uint32) *Asm

func (*Asm) Uint64

func (asm *Asm) Uint64(val uint64) *Asm

func (*Asm) Xor

func (asm *Asm) Xor(z Reg, a Arg) *Asm

%reg_z ^= a

func (*Asm) Zero

func (asm *Asm) Zero(dst *Var) *Asm

type Code

type Code []uint8

type Const

type Const struct {
	// contains filtered or unexported fields
}

func Int64

func Int64(val int64) *Const

func (*Const) Const

func (c *Const) Const() bool

func (*Const) Kind

func (c *Const) Kind() reflect.Kind

type Op

type Op uint8
const (
	LOAD Op = iota
	STORE

	ALLOC
	FREE

	ADD
	SUB
	MUL
	SDIV // signed   quotient
	UDIV // unsigned quotient
	SREM // signed   remainder
	UREM // unsigned remainder

	AND
	OR
	XOR
	ANDNOT

	NEG
	NOT
)

type Reg

type Reg uint32

software-defined register. mapped to hardware register by Asm

const (
	NoReg Reg = 0          // means "no register"
	RegLo Reg = 1          // first user-available register = 1
	RegHi Reg = 0x80000000 // last user-available register = 0x80000000
)

func (Reg) Const

func (g Reg) Const() bool

func (Reg) Kind

func (g Reg) Kind() reflect.Kind

type Save

type Save struct {
	// contains filtered or unexported fields
}

func (*Save) Init

func (s *Save) Init(start, end uint16)

type Var

type Var struct {
	// contains filtered or unexported fields
}

func NewVar

func NewVar(idx uint16) *Var

func (*Var) Const

func (v *Var) Const() bool

func (*Var) Kind

func (v *Var) Kind() reflect.Kind

Directories

Path Synopsis
_template

Jump to

Keyboard shortcuts

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