Improved code generation

This commit is contained in:
Eduard Urbach 2024-07-09 17:00:04 +02:00
parent 6e22febc01
commit 3c189a025f
Signed by: eduard
GPG key ID: 49226B848C78F6C8
23 changed files with 201 additions and 95 deletions

View file

@ -18,7 +18,7 @@ func (f *Function) ExpressionToRegister(node *expression.Expression, register cp
err := f.CompileCall(node)
if register != f.cpu.Output[0] {
f.assembler.RegisterRegister(asm.MOVE, register, f.cpu.Output[0])
f.RegisterRegister(asm.MOVE, register, f.cpu.Output[0])
}
return err
@ -34,8 +34,6 @@ func (f *Function) ExpressionToRegister(node *expression.Expression, register cp
if f.UsesRegister(right, register) {
register = f.cpu.MustFindFree(f.cpu.General)
} else {
f.SaveRegister(register)
}
f.cpu.Reserve(register)
@ -45,11 +43,10 @@ func (f *Function) ExpressionToRegister(node *expression.Expression, register cp
return err
}
f.cpu.Use(register)
err = f.Execute(node.Token, register, right)
if register != final {
f.assembler.RegisterRegister(asm.MOVE, final, register)
f.RegisterRegister(asm.MOVE, final, register)
f.cpu.Free(register)
}