Documentation ¶
Overview ¶
Package ir2 contains an Intermediate Representation (IR) in Static Single Assignment (SSA) form.
- Each Program contains a list of Packages.
- Packages are a list of Globals, TypeDefs and Funcs.
- Each Func is a list of Blocks.
- Blocks have a list of Instrs.
- Instrs Def (define) Values, and have Values as Args.
- Values can be constants, types, temps, registers, memory locations, etc.
Note: Unlike other SSA representations, this representation separates the concept of instructions from the concept of values. This allows an instruction to define multiple values. This is handy to avoid needing tuples and unpacking tuples to handle instructions (like function calls) that return multiple values.
Index ¶
- Variables
- func BoolValue(c Const) (bool, bool)
- func Int64Value(c Const) (int64, bool)
- func IntValue(c Const) (int, bool)
- func StringValue(c Const) (string, bool)
- type Block
- func (blk *Block) AddPred(pred *Block)
- func (blk *Block) AddSucc(succ *Block)
- func (id Block) BlockIn(fn *Func) *Block
- func (blk *Block) Control() *Instr
- func (blk *Block) Emit(out io.Writer, dec Decorator)
- func (blk *Block) Func() *Func
- func (id Block) IDNum() int
- func (id Block) IDString() string
- func (blk *Block) InsertInstr(i int, instr *Instr)
- func (blk *Block) Instr(i int) *Instr
- func (id Block) InstrIn(fn *Func) *Instr
- func (blk *Block) InstrIter() *BlockIter
- func (id Block) IsBlock() bool
- func (id Block) IsInstr() bool
- func (id Block) IsValue() bool
- func (blk *Block) NumInstrs() int
- func (blk *Block) NumPreds() int
- func (blk *Block) NumSuccs() int
- func (id Block) ObjectKind() ObjectKind
- func (blk *Block) Pred(i int) *Block
- func (blk *Block) RemoveInstr(inst *Instr)
- func (blk *Block) String() string
- func (blk *Block) Succ(i int) *Block
- func (blk *Block) SwapInstr(a *Instr, b *Instr)
- func (blk *Block) Unlink()
- func (id Block) ValueIn(fn *Func) *Value
- type BlockIter
- func (it *BlockIter) Block() *Block
- func (it *BlockIter) BlockIndex() int
- func (it *BlockIter) Changed()
- func (it *BlockIter) HasChanged() bool
- func (it *BlockIter) HasNext() bool
- func (it *BlockIter) HasPrev() bool
- func (it *BlockIter) Insert(op Op, typ types.Type, args ...interface{}) *Instr
- func (it *BlockIter) Instr() *Instr
- func (it *BlockIter) InstrIndex() int
- func (it *BlockIter) Last() bool
- func (it *BlockIter) Next() bool
- func (it *BlockIter) Prev() bool
- func (it *BlockIter) Remove() *Instr
- func (it *BlockIter) Update(op Op, typ types.Type, args ...interface{}) *Instr
- type Const
- type ConstKind
- type CrossBlockIter
- type Decorator
- type Func
- func (fn *Func) Block(i int) *Block
- func (fn *Func) BlockForID(b ident) *Block
- func (fn *Func) BlockIndex(blk *Block) int
- func (fn *Func) Emit(out io.Writer, dec Decorator)
- func (fn *Func) HasPlaceholders() bool
- func (fn *Func) InsertBlock(i int, blk *Block)
- func (fn *Func) InstrForID(i ident) *Instr
- func (fn *Func) InstrIter() *CrossBlockIter
- func (fn *Func) LongString() string
- func (fn *Func) NewBlock() *Block
- func (fn *Func) NewInstr(op Op, typ types.Type, args ...interface{}) *Instr
- func (fn *Func) NewValue(typ types.Type) *Value
- func (fn *Func) NumBlocks() int
- func (fn *Func) Package() *Package
- func (fn *Func) PlaceholderFor(label string) *Value
- func (fn *Func) PlaceholderLabels() []string
- func (fn *Func) RemoveBlock(blk *Block)
- func (fn *Func) ResolvePlaceholder(label string, value *Value)
- func (fn *Func) ValueFor(typ types.Type, v interface{}) *Value
- func (fn *Func) ValueForID(v ident) *Value
- type Global
- type Instr
- func (id Instr) BlockIn(fn *Func) *Block
- func (in *Instr) Emit(out io.Writer, dec Decorator)
- func (id Instr) IDNum() int
- func (id Instr) IDString() string
- func (in *Instr) Index() int
- func (id Instr) InstrIn(fn *Func) *Instr
- func (id Instr) IsBlock() bool
- func (id Instr) IsInstr() bool
- func (id Instr) IsValue() bool
- func (in *Instr) LineNo() int
- func (in *Instr) LongString() string
- func (in *Instr) MoveAfter(other *Instr)
- func (in *Instr) MoveBefore(other *Instr)
- func (id Instr) ObjectKind() ObjectKind
- func (in *Instr) Update(op Op, typ types.Type, args ...interface{})
- func (id Instr) ValueIn(fn *Func) *Value
- type Iter
- type Location
- type ObjectKind
- type Op
- type Package
- func (pkg *Package) Emit(out io.Writer, dec Decorator)
- func (pkg *Package) Func(name string) *Func
- func (pkg *Package) Funcs() []*Func
- func (pkg *Package) Global(name string) *Global
- func (pkg *Package) Globals() []*Global
- func (pkg *Package) NewFunc(name string, sig *types.Signature) *Func
- func (pkg *Package) NewGlobal(name string, typ types.Type) *Global
- func (pkg *Package) NewStringLiteral(funcname, str string) *Global
- func (pkg *Package) NewTypeDef(name string, typ types.Type) *TypeDef
- func (pkg *Package) Program() *Program
- func (pkg *Package) TypeDef(name string) *TypeDef
- func (pkg *Package) TypeDefs() []*TypeDef
- type Program
- func (prog *Program) AddPackage(pkg *Package)
- func (prog *Program) Emit(out io.Writer, dec Decorator)
- func (prog *Program) Func(name string) *Func
- func (prog *Program) Global(name string) *Global
- func (prog *Program) Package(name string) *Package
- func (prog *Program) Packages() []*Package
- func (prog *Program) StringLiteral(str string, fullname string) *Global
- type SSAString
- func (ss SSAString) Begin(out io.Writer, what interface{})
- func (ss SSAString) BeginLabel(out io.Writer, what interface{})
- func (ss SSAString) End(out io.Writer, what interface{})
- func (ss SSAString) EndLabel(out io.Writer, what interface{})
- func (ss SSAString) SSAForm() bool
- func (ss SSAString) WrapLabel(str string, what interface{}) string
- func (ss SSAString) WrapOp(str string, what Op) string
- func (ss SSAString) WrapRef(str string, what interface{}) string
- func (ss SSAString) WrapType(str string) string
- type TypeDef
- type User
- func (use *User) AddDef(val *Value) *Value
- func (use *User) Arg(i int) *Value
- func (use *User) ArgIndex(arg *Value) int
- func (use *User) Args() []*Value
- func (use *User) Block() *Block
- func (id User) BlockIn(fn *Func) *Block
- func (use *User) Def(i int) *Value
- func (use *User) Defs() []*Value
- func (use *User) Func() *Func
- func (id User) IDNum() int
- func (id User) IDString() string
- func (use *User) InsertArg(i int, arg *Value)
- func (use *User) Instr() *Instr
- func (id User) InstrIn(fn *Func) *Instr
- func (id User) IsBlock() bool
- func (id User) IsInstr() bool
- func (id User) IsValue() bool
- func (use *User) NumArgs() int
- func (use *User) NumDefs() int
- func (id User) ObjectKind() ObjectKind
- func (use *User) RemoveArg(arg *Value)
- func (use *User) ReplaceArg(i int, arg *Value)
- func (id User) ValueIn(fn *Func) *Value
- type Value
- func (val *Value) ArgSlot() int
- func (id Value) BlockIn(fn *Func) *Block
- func (val *Value) Const() Const
- func (val *Value) Def() *User
- func (val *Value) Func() *Func
- func (id Value) IDNum() int
- func (id Value) IDString() string
- func (val *Value) InArgSlot() bool
- func (val *Value) InParamSlot() bool
- func (val *Value) InReg() bool
- func (val *Value) InSpillSlot() bool
- func (val *Value) InTemp() bool
- func (id Value) InstrIn(fn *Func) *Instr
- func (id Value) IsBlock() bool
- func (val *Value) IsConst() bool
- func (val *Value) IsDefinedByOp(op Op) bool
- func (id Value) IsInstr() bool
- func (id Value) IsValue() bool
- func (val *Value) NumUses() int
- func (id Value) ObjectKind() ObjectKind
- func (val *Value) ParamSlot() int
- func (val *Value) Reg() reg.Reg
- func (val *Value) ReplaceUsesWith(other *Value)
- func (val *Value) SetArgSlot(slot int)
- func (val *Value) SetConst(con Const)
- func (val *Value) SetParamSlot(slot int)
- func (val *Value) SetReg(reg reg.Reg)
- func (val *Value) SetSpillSlot(slot int)
- func (val *Value) SetTemp()
- func (val *Value) SpillSlot() int
- func (val *Value) String() string
- func (val *Value) Temp() ident
- func (val *Value) Use(i int) *User
- func (id Value) ValueIn(fn *Func) *Value
Constants ¶
This section is empty.
Variables ¶
var Placeholder ident = idFor(ValuePlaceholder, -1)
Placeholder is an invalid ID meant to signal a place that needs to be filled
Functions ¶
func Int64Value ¶ added in v0.1.3
Int64Value returns an int64 for an IntConst
func StringValue ¶ added in v0.1.3
StringValue return a string for a StringConst
Types ¶
type Block ¶
type Block struct { User // contains filtered or unexported fields }
Block is a collection of Instrs which is a basic block in a control flow graph. The last Instr of a block must be a control flow Instr. A block may begin with one or more Phi Instrs, and all Phis should be at the start of the Block. Blocks can have Preds and Succs for the blocks that come before or after in the control flow graph respectively.
func (Block) BlockIn ¶ added in v0.1.4
BlockIn returns the Block in the Func or nil if this ID is not for a Block
func (*Block) Control ¶ added in v0.1.3
Control returns the last instruction, which should be a control flow instruction
func (Block) IDNum ¶ added in v0.1.4
func (id Block) IDNum() int
IDNum returns the ID number for the ID
func (Block) IDString ¶ added in v0.1.4
func (id Block) IDString() string
IDString returns the ID string
func (*Block) InsertInstr ¶ added in v0.1.3
InsertInstr inserts the instruction at the ith position. -1 means append it.
func (Block) InstrIn ¶ added in v0.1.4
InstrIn returns the Instr in the Func or nil if this ID is not for a Instr
func (*Block) InstrIter ¶ added in v0.1.3
InstrIter will return an Iter which iterates over every instruction in this block.
func (Block) IsBlock ¶ added in v0.1.4
func (id Block) IsBlock() bool
IsBlock returns if ID points to a Block
func (Block) IsInstr ¶ added in v0.1.4
func (id Block) IsInstr() bool
IsInstr returns if ID points to a Instr
func (Block) IsValue ¶ added in v0.1.4
func (id Block) IsValue() bool
IsValue returns if ID points to a Value
func (Block) ObjectKind ¶ added in v0.1.4
func (id Block) ObjectKind() ObjectKind
ObjectKind returns the kind of object the ID is for
func (*Block) RemoveInstr ¶ added in v0.1.3
RemoveInstr removes the Instr from the list
type BlockIter ¶ added in v0.1.3
type BlockIter struct {
// contains filtered or unexported fields
}
BlockIter is an iterator that iterates over instructions in a Block
func (*BlockIter) BlockIndex ¶ added in v0.1.3
BlockIndex returns the index of the Block within the Func
func (*BlockIter) Changed ¶ added in v0.1.3
func (it *BlockIter) Changed()
Changed forces `HasChanged()` to return true
func (*BlockIter) HasChanged ¶ added in v0.1.3
HasChanged returns true if `Changed()` was called, or one of the mutation methods
func (*BlockIter) Insert ¶ added in v0.1.3
Insert inserts an instruction at the cursor position and increments the position
func (*BlockIter) InstrIndex ¶ added in v0.1.3
InstrIndex returns the index of the current instruction in the Block
func (*BlockIter) Next ¶ added in v0.1.3
Next increments the position and returns whether that was successful
func (*BlockIter) Prev ¶ added in v0.1.3
Prev decrements the position and returns whether that was successful
type Const ¶ added in v0.1.3
type Const interface { Location() Location Kind() ConstKind String() string // contains filtered or unexported methods }
Const is a constant value of some sort
type CrossBlockIter ¶ added in v0.1.3
type CrossBlockIter struct { BlockIter // contains filtered or unexported fields }
func (*CrossBlockIter) HasNext ¶ added in v0.1.3
func (it *CrossBlockIter) HasNext() bool
HasNext returns whether Next() will succeed
func (*CrossBlockIter) HasPrev ¶ added in v0.1.3
func (it *CrossBlockIter) HasPrev() bool
HasPrev returns whether Prev() will succeed
func (*CrossBlockIter) Last ¶ added in v0.1.4
func (it *CrossBlockIter) Last() bool
Last fast forwards to the end of the func
func (*CrossBlockIter) Next ¶ added in v0.1.3
func (it *CrossBlockIter) Next() bool
Next increments the position and returns whether that was successful
func (*CrossBlockIter) Prev ¶ added in v0.1.3
func (it *CrossBlockIter) Prev() bool
Prev decrements the position and returns whether that was successful
type Decorator ¶ added in v0.1.3
type Decorator interface { Begin(out io.Writer, what interface{}) End(out io.Writer, what interface{}) BeginLabel(out io.Writer, what interface{}) EndLabel(out io.Writer, what interface{}) WrapLabel(str string, what interface{}) string WrapRef(str string, what interface{}) string WrapType(str string) string WrapOp(str string, what Op) string SSAForm() bool }
type Func ¶
type Func struct { Name string FullName string Sig *types.Signature Referenced bool NumCalls int // contains filtered or unexported fields }
Func is a collection of Blocks, which comprise a function or method in a Program.
func (*Func) BlockForID ¶ added in v0.1.3
BlockForID returns a Block by ID
func (*Func) BlockIndex ¶ added in v0.1.3
BlockIndex returns the index of the Block in the list
func (*Func) HasPlaceholders ¶ added in v0.1.3
HasPlaceholders returns whether there are unresolved placeholders or not
func (*Func) InsertBlock ¶ added in v0.1.3
InsertBlock inserts the block at the specific location in the list
func (*Func) InstrForID ¶ added in v0.1.3
InstrForID returns the Instr for the ID
func (*Func) InstrIter ¶ added in v0.1.3
func (fn *Func) InstrIter() *CrossBlockIter
InstrIter returns an iterator that will iterate over every block and instruction in the func.
func (*Func) LongString ¶ added in v0.1.3
func (*Func) PlaceholderFor ¶ added in v0.1.3
PlaceholderFor creates a special placeholder value that can be later resolved with a different value. This is useful for marking and resolving forward references.
func (*Func) PlaceholderLabels ¶ added in v0.1.3
PlaceholderLabels returns a sorted list of placeholder labels
func (*Func) RemoveBlock ¶ added in v0.1.3
RemoveBlock removes the Block from the list but does not remove it from succ/pred lists. See blk.Unlink()
func (*Func) ResolvePlaceholder ¶ added in v0.1.3
ResolvePlaceholder removes the placeholder from the list, replacing its uses with the specified value
func (*Func) ValueForID ¶ added in v0.1.3
ValueForID returns the Value for the ID
type Global ¶ added in v0.1.3
type Global struct { Name string FullName string Type types.Type Referenced bool // initial value Value Const // contains filtered or unexported fields }
Global is a global variable or literal stored in memory
func GlobalValue ¶ added in v0.1.3
GlobalValue returns a *Func for a GlobalConst
type Instr ¶
Instr is an instruction that may define one or more Values, and take as args (operands) one or more Values.
func (Instr) BlockIn ¶ added in v0.1.4
BlockIn returns the Block in the Func or nil if this ID is not for a Block
func (Instr) IDNum ¶ added in v0.1.4
func (id Instr) IDNum() int
IDNum returns the ID number for the ID
func (Instr) IDString ¶ added in v0.1.4
func (id Instr) IDString() string
IDString returns the ID string
func (Instr) InstrIn ¶ added in v0.1.4
InstrIn returns the Instr in the Func or nil if this ID is not for a Instr
func (Instr) IsBlock ¶ added in v0.1.4
func (id Instr) IsBlock() bool
IsBlock returns if ID points to a Block
func (Instr) IsInstr ¶ added in v0.1.4
func (id Instr) IsInstr() bool
IsInstr returns if ID points to a Instr
func (Instr) IsValue ¶ added in v0.1.4
func (id Instr) IsValue() bool
IsValue returns if ID points to a Value
func (*Instr) LongString ¶ added in v0.1.3
func (*Instr) MoveBefore ¶ added in v0.1.3
MoveBefore moves this instruction before other
func (Instr) ObjectKind ¶ added in v0.1.4
func (id Instr) ObjectKind() ObjectKind
ObjectKind returns the kind of object the ID is for
type Iter ¶ added in v0.1.3
type Iter interface { // Instr returns the current instruction Instr() *Instr // InstrIndex returns the index of the current instruction in the Block InstrIndex() int // Block returns the current block Block() *Block // BlockIndex returns the index of the Block within the Func BlockIndex() int // HasNext returns whether Next() will succeed HasNext() bool // Next increments the position and returns whether that was successful Next() bool // HasPrev returns whether Prev() will succeed HasPrev() bool // Prev decrements the position and returns whether that was successful Prev() bool // Last fast forwards to the end Last() bool // Insert inserts an instruction at the cursor position and increments the position Insert(op Op, typ types.Type, args ...interface{}) *Instr // Remove will remove the instruction at the current position and decrement the position, // returning the removed instruction. // NOTE: this only removes the instruction from the Block, it does not Unlink() it from // any uses. Remove() *Instr // Update updates the instruction at the cursor position Update(op Op, typ types.Type, args ...interface{}) *Instr // HasChanged returns true if `Changed()` was called, or one of the mutation methods HasChanged() bool // Changed forces `HasChanged()` to return true Changed() }
Iter is a iterator over instructions
type Location ¶ added in v0.1.4
type Location uint8
Location is the location of a Value
const ( InTemp Location = iota InConst InReg // Param slots are an area of the stack for func parameters. // Specifically, they are in the caller's arg slot area. InParamSlot // Arg slots are an area of the stack reserved for call arguments. InArgSlot // Spill slots are an area of the stack reserved for register spills. InSpillSlot )
type ObjectKind ¶ added in v0.1.4
type ObjectKind uint8
const ( UnknownObject ObjectKind = iota BlockObject InstrObject ValueObject ValuePlaceholder )
type Op ¶ added in v0.1.3
type Op interface { String() string IsCall() bool IsCompare() bool IsCopy() bool IsCommutative() bool IsSink() bool }
Op describes an operation (instruction) type
type Package ¶
type Package struct { Type *types.Package Name string Path string // contains filtered or unexported fields }
Package is a collection of Funcs and Globals which comprise a part of a program.
func (*Package) NewStringLiteral ¶ added in v0.1.3
NewStringLiteral creates a global with a string literal value
func (*Package) NewTypeDef ¶ added in v0.1.3
NewTypeDef adds a typedef to the list
type Program ¶ added in v0.1.3
Program is a collection of packages, which comprise a whole program.
func (*Program) AddPackage ¶ added in v0.1.3
AddPackage adds a package to the list
func (*Program) Package ¶ added in v0.1.3
Package finds a package first by full name, then if there is no match, by short name.
type SSAString ¶ added in v0.1.3
type SSAString struct{}
SSAString emits a plain string in SSA form
func (SSAString) BeginLabel ¶ added in v0.1.4
type TypeDef ¶ added in v0.1.3
type TypeDef struct { Name string Referenced bool Type types.Type // contains filtered or unexported fields }
TypeDef is a type definition
type User ¶ added in v0.1.4
type User struct {
// contains filtered or unexported fields
}
User uses and defines Values. Blocks and Instrs are Users.
func (User) BlockIn ¶ added in v0.1.4
BlockIn returns the Block in the Func or nil if this ID is not for a Block
func (User) IDNum ¶ added in v0.1.4
func (id User) IDNum() int
IDNum returns the ID number for the ID
func (User) IDString ¶ added in v0.1.4
func (id User) IDString() string
IDString returns the ID string
func (*User) InsertArg ¶ added in v0.1.4
InsertArg inserts the Value in the argument list at position i, or appending if i is -1
func (*User) Instr ¶ added in v0.1.4
Instr returns either the Instr or an empty Instr to cut down on having to check IsInstr() everywhere.
func (User) InstrIn ¶ added in v0.1.4
InstrIn returns the Instr in the Func or nil if this ID is not for a Instr
func (User) IsBlock ¶ added in v0.1.4
func (id User) IsBlock() bool
IsBlock returns if ID points to a Block
func (User) IsInstr ¶ added in v0.1.4
func (id User) IsInstr() bool
IsInstr returns if ID points to a Instr
func (User) IsValue ¶ added in v0.1.4
func (id User) IsValue() bool
IsValue returns if ID points to a Value
func (User) ObjectKind ¶ added in v0.1.4
func (id User) ObjectKind() ObjectKind
ObjectKind returns the kind of object the ID is for
func (*User) ReplaceArg ¶ added in v0.1.4
ReplaceArg replaces the ith argument with the value specified. Will call InsertArg instead if i == NumArgs().
type Value ¶
type Value struct { // Type is the type of the Value Type types.Type // contains filtered or unexported fields }
Value is a single value that may be stored in a single place. This may be a constant or variable, stored in a temp, register or on the stack.
func (*Value) ArgSlot ¶ added in v0.1.4
ArgSlot returns which arg slot the Value is in, or -1 if not in a arg slot.
func (Value) BlockIn ¶ added in v0.1.4
BlockIn returns the Block in the Func or nil if this ID is not for a Block
func (*Value) Const ¶ added in v0.1.3
Const returns the constant value of the Value or NotConst if not constant.
func (*Value) Def ¶ added in v0.1.3
Def returns the Instr defining the Value, or nil if it's not defined
func (Value) IDNum ¶ added in v0.1.4
func (id Value) IDNum() int
IDNum returns the ID number for the ID
func (Value) IDString ¶ added in v0.1.4
func (id Value) IDString() string
IDString returns the ID string
func (*Value) InArgSlot ¶ added in v0.1.4
InArgSlot returns whether the value in one of the arg slots on the stack.
func (*Value) InParamSlot ¶ added in v0.1.4
InParamSlot returns whether the value in one of the param slots on the stack.
func (*Value) InSpillSlot ¶ added in v0.1.4
InSpillSlot returns whether the value in one of the spill slots on the stack.
func (Value) InstrIn ¶ added in v0.1.4
InstrIn returns the Instr in the Func or nil if this ID is not for a Instr
func (Value) IsBlock ¶ added in v0.1.4
func (id Value) IsBlock() bool
IsBlock returns if ID points to a Block
func (*Value) IsDefinedByOp ¶ added in v0.1.4
func (Value) IsInstr ¶ added in v0.1.4
func (id Value) IsInstr() bool
IsInstr returns if ID points to a Instr
func (Value) IsValue ¶ added in v0.1.4
func (id Value) IsValue() bool
IsValue returns if ID points to a Value
func (Value) ObjectKind ¶ added in v0.1.4
func (id Value) ObjectKind() ObjectKind
ObjectKind returns the kind of object the ID is for
func (*Value) ParamSlot ¶ added in v0.1.4
ParamSlot returns which param slot the Value is in, or -1 if not in a param slot.
func (*Value) Reg ¶ added in v0.1.3
Reg returns which register the Value is in, otherwise reg.None if its not in a register.
func (*Value) ReplaceUsesWith ¶ added in v0.1.3
ReplaceUsesWith will go through each use of val and replace it with other. Does not modify any definitions.
func (*Value) SetArgSlot ¶ added in v0.1.4
SetArgSlot puts the Value in the specified arg slot on the stack.
func (*Value) SetParamSlot ¶ added in v0.1.4
SetParamSlot puts the Value in the specified param slot on the stack.
func (*Value) SetSpillSlot ¶ added in v0.1.4
SetSpillSlot puts the Value in the specified spill slot on the stack.
func (*Value) SetTemp ¶ added in v0.1.4
func (val *Value) SetTemp()
SetTemp turns the value into a temp.
func (*Value) SpillSlot ¶ added in v0.1.4
SpillSlot returns which spill slot the Value is in, or -1 if not in a spill slot.
func (*Value) Temp ¶ added in v0.1.4
func (val *Value) Temp() ident
Temp returns which temp if the value is in a temp.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
experimental simplified type system Defintions: - A `byte` is the smallest addressable unit in the CPU, this does not need to be 8 bits, though it usually is.
|
experimental simplified type system Defintions: - A `byte` is the smallest addressable unit in the CPU, this does not need to be 8 bits, though it usually is. |