Simplified CPU state

This commit is contained in:
2025-03-31 14:36:42 +02:00
parent 0bc52fb673
commit 008f097186
7 changed files with 23 additions and 40 deletions

View File

@ -37,12 +37,17 @@ func (f *Function) CompileAssign(node *ast.Assign) error {
switch leftValue := leftValue.(type) {
case *eval.Register:
// TODO: Reservation needs to be canceled on defer
f.CurrentScope().Reserve(leftValue.Register)
if !f.RegisterIsUsed(leftValue.Register) {
f.UseRegister(leftValue.Register)
defer f.FreeRegister(leftValue.Register)
}
f.Execute(operation, leftValue.Register, right)
case *eval.Memory:
// TODO: Reservation needs to be canceled on defer
f.CurrentScope().Reserve(leftValue.Memory.Base)
if !f.RegisterIsUsed(leftValue.Memory.Base) {
f.UseRegister(leftValue.Memory.Base)
defer f.FreeRegister(leftValue.Memory.Base)
}
if operation.Kind == token.Assign {
rightValue, err := f.Evaluate(right)