package asm import "git.akyoto.dev/cli/q/src/build/cpu" // unnecessary returns true if the register/register operation can be skipped. func (a *Assembler) unnecessary(mnemonic Mnemonic, left cpu.Register, right cpu.Register) bool { if mnemonic == MOVE && left == right { return true } if len(a.Instructions) == 0 { return false } last := a.Instructions[len(a.Instructions)-1] if mnemonic == MOVE && last.Mnemonic == MOVE { data, isRegReg := last.Data.(*RegisterRegister) if !isRegReg { return false } if data.Destination == left && data.Source == right { return true } if data.Destination == right && data.Source == left { return true } } return false }