This commit is contained in:
Andre Wagner
2026-05-06 11:58:15 -05:00
parent 88f9ce0ea6
commit 7ecffcfdda

View File

@@ -273,7 +273,7 @@ end
-- code execution -- code execution
-- --
function VM:call(n_pars) function VM:_enter_function(n_pars)
-- get parameters -- get parameters
local vars = {} local vars = {}
for i=1,n_pars do for i=1,n_pars do
@@ -295,13 +295,11 @@ function VM:call(n_pars)
for i=1,n_pars do for i=1,n_pars do
self.stack:push(vars[#vars-i+1]) self.stack:push(vars[#vars-i+1])
end end
end
-- execute function function VM:call(n_pars)
self:_enter_function(n_pars)
self:_run_until_return() self:_run_until_return()
-- exit function
table.remove(self.loc)
return self return self
end end
@@ -364,12 +362,14 @@ function VM:_step()
elseif op.operator == 'call' then elseif op.operator == 'call' then
assert(op.operand >= 0) assert(op.operand >= 0)
self:call(op.operand) self:_enter_function(op.operand)
elseif op.operator == 'ret' then elseif op.operator == 'ret' then
local v = self.stack:pop() local v = self.stack:pop()
self.stack:pop_fp() self.stack:pop_fp()
self.stack:push(v) self.stack:push(v)
table.remove(self.loc)
if self.debug then print(self.stack:debug()) end
return return
else else