q/src/build/asm/RegisterLabel.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,
},
})
}