Implemented data labels

This commit is contained in:
Eduard Urbach 2024-07-13 00:13:13 +02:00
parent ff0b8ecb10
commit 1b75529bb3
Signed by: eduard
GPG key ID: 49226B848C78F6C8
18 changed files with 428 additions and 327 deletions

View file

@ -0,0 +1,29 @@
package asm
import (
"fmt"
"git.akyoto.dev/cli/q/src/build/cpu"
)
// RegisterLabel operates with a register and a label.
type RegisterLabel struct {
Register cpu.Register
Label string
}
// 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,
},
})
}