29 lines
648 B
Go
29 lines
648 B
Go
package asm
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.akyoto.dev/cli/q/src/build/cpu"
|
|
)
|
|
|
|
// RegisterLabel operates with a register and a label.
|
|
type RegisterLabel struct {
|
|
Label string
|
|
Register cpu.Register
|
|
}
|
|
|
|
// String returns a human readable version.
|
|
func (data *RegisterLabel) String() string {
|
|
return fmt.Sprintf("%s, %s", data.Register, data.Label)
|
|
}
|
|
|
|
// RegisterLabel adds an instruction with a register and a label.
|
|
func (a *Assembler) RegisterLabel(mnemonic Mnemonic, reg cpu.Register, label string) {
|
|
a.Instructions = append(a.Instructions, Instruction{
|
|
Mnemonic: mnemonic,
|
|
Data: &RegisterLabel{
|
|
Register: reg,
|
|
Label: label,
|
|
},
|
|
})
|
|
}
|