Simplified CPU state
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user