20 lines
426 B
Go
20 lines
426 B
Go
package register
|
|
|
|
import (
|
|
"git.akyoto.dev/cli/q/src/build/asm"
|
|
"git.akyoto.dev/cli/q/src/build/cpu"
|
|
)
|
|
|
|
func (f *Machine) RegisterLabel(mnemonic asm.Mnemonic, register cpu.Register, label string) {
|
|
if f.RegisterIsUsed(register) && isDestructive(mnemonic) {
|
|
f.SaveRegister(register)
|
|
}
|
|
|
|
f.Assembler.RegisterLabel(mnemonic, register, label)
|
|
|
|
if mnemonic == asm.MOVE {
|
|
f.UseRegister(register)
|
|
}
|
|
|
|
f.postInstruction()
|
|
}
|