Documentation ¶
Index ¶
- Variables
- type Arch
- type ArchAMD64
- func (arch *ArchAMD64) ClearReg(a *Assembly, r RegAMD64)
- func (arch *ArchAMD64) ExchangeMem4BytesReg(a *Assembly, base RegAMD64, offset int, r RegAMD64)
- func (*ArchAMD64) Machine() string
- func (arch *ArchAMD64) OrMem4BytesImm(a *Assembly, base RegAMD64, offset, value int)
- func (*ArchAMD64) Specify(x Specific) int
- type ArchARM64
- type ArchAssembly
- type Assembly
- type Cond
- type FloatReg
- type Reg
- type RegAMD64
- type RegARM64
- type Shift
- type Specific
- type Syscall
- type System
Constants ¶
This section is empty.
Variables ¶
View Source
var AMD64 = &ArchAMD64{ ClearableRegs: []RegAMD64{ RAX, RCX, RDX, RBX, RBP, RSI, RDI, R8, R9, R10, R11, R12, R13, R14, R15, }, }
View Source
var ARM64 = &ArchARM64{ ClearableRegs: []RegARM64{ X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29, }, }
View Source
var Archs = map[string]Arch{ "amd64": AMD64, "arm64": ARM64, }
Indexed by Go-style CPU architecture name (amd64, arm64).
View Source
var Native = AMD64
Functions ¶
This section is empty.
Types ¶
type Arch ¶
type Arch interface { Machine() string // GNU-style CPU architecture name (x86_64, aarch64). Specify(Specific) int // Get value for the CPU architecture. // contains filtered or unexported methods }
Arch itecture of CPU.
type ArchAMD64 ¶
type ArchAMD64 struct {
ClearableRegs []RegAMD64
}
func (*ArchAMD64) ExchangeMem4BytesReg ¶
func (*ArchAMD64) OrMem4BytesImm ¶
type ArchAssembly ¶
type ArchAssembly interface { Set(Reg) Label(name string) FunctionEpilogue() Function(name string) FunctionWithoutPrologue(name string) Return() ReturnWithoutEpilogue() Address(dest Reg, name string) MoveDef(dest Reg, name string) MoveImm(dest Reg, value int) MoveImm64(dest Reg, value uint64) MoveReg(dest, src Reg) MoveRegFloat(dest Reg, src FloatReg) AddImm(dest, src Reg, value int) AddReg(dest, src1, src2 Reg) SubtractImm(dest Reg, value int) SubtractReg(dest, src Reg) MultiplyImm(dest, src Reg, value int, temp Reg) AndImm(dest Reg, value int) AndReg(dest, src Reg) OrImm(dest Reg, value int) OrReg(dest, src Reg) ShiftImm(s Shift, r Reg, count int) Load(dest, base Reg, offset int) Load4Bytes(dest, base Reg, offset int) LoadByte(dest, base Reg, offset int) Store(base Reg, offset int, src Reg) Store4Bytes(base Reg, offset int, src Reg) Push(Reg) Pop(Reg) Call(name string) Jump(name string) JumpRegRoutine(r Reg, internalNamePrefix string) JumpIfBitSet(r Reg, bit uint, name string) JumpIfBitNotSet(r Reg, bit uint, name string) JumpIfImm(c Cond, r Reg, value int, name string) JumpIfReg(c Cond, dest, src Reg, name string) Syscall(Syscall) Unreachable() }
type Assembly ¶
type Assembly struct { Arch ArchAssembly *System // contains filtered or unexported fields }
func NewAssembly ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.