rename also get_slot, to slot_to_reg
makes source and target clear
This commit is contained in:
@ -17,14 +17,14 @@ HERE
|
||||
|
||||
def test_chain
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","LoadConstant",
|
||||
"LoadConstant","OperatorInstruction","RegToSlot","Label","FunctionReturn",
|
||||
"RegisterTransfer","Syscall","NilClass"]
|
||||
end
|
||||
|
||||
def test_get
|
||||
assert_equal Register::GetSlot , ticks(4).class
|
||||
assert_equal Register::SlotToReg , ticks(4).class
|
||||
assert @interpreter.get_register( :r2 )
|
||||
assert Integer , @interpreter.get_register( :r2 ).class
|
||||
end
|
||||
|
@ -36,7 +36,7 @@ class AddChange < MiniTest::Test
|
||||
|
||||
def test_chain
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","LoadConstant",
|
||||
"LoadConstant","OperatorInstruction","RegToSlot","Label","FunctionReturn",
|
||||
"RegisterTransfer","Syscall","NilClass"]
|
||||
|
@ -20,13 +20,13 @@ HERE
|
||||
|
||||
def test_chain
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","GetSlot",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","SlotToReg",
|
||||
"LoadConstant","RegToSlot","LoadConstant","RegToSlot","LoadConstant",
|
||||
"RegToSlot","LoadConstant","RegToSlot","LoadConstant","RegToSlot",
|
||||
"LoadConstant","RegToSlot","RegisterTransfer","FunctionCall","Label",
|
||||
"GetSlot","GetSlot","GetSlot","SetByte","Label",
|
||||
"FunctionReturn","RegisterTransfer","GetSlot","GetSlot","Label",
|
||||
"SlotToReg","SlotToReg","SlotToReg","SetByte","Label",
|
||||
"FunctionReturn","RegisterTransfer","SlotToReg","SlotToReg","Label",
|
||||
"FunctionReturn","RegisterTransfer","Syscall","NilClass"]
|
||||
end
|
||||
|
||||
@ -42,7 +42,7 @@ HERE
|
||||
assert_equal :r2, @interpreter.instruction.array.symbol
|
||||
end
|
||||
def test_get
|
||||
assert_equal Register::GetSlot , ticks(4).class
|
||||
assert_equal Register::SlotToReg , ticks(4).class
|
||||
assert @interpreter.get_register( :r1 )
|
||||
assert Integer , @interpreter.get_register( :r1 ).class
|
||||
end
|
||||
|
@ -33,18 +33,18 @@ HERE
|
||||
end
|
||||
def test_if
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","GetSlot",
|
||||
"GetSlot","RegToSlot","LoadConstant","RegToSlot","LoadConstant",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","SlotToReg",
|
||||
"SlotToReg","RegToSlot","LoadConstant","RegToSlot","LoadConstant",
|
||||
"RegToSlot","LoadConstant","RegToSlot","LoadConstant","RegToSlot",
|
||||
"RegisterTransfer","FunctionCall","Label","GetSlot","LoadConstant",
|
||||
"OperatorInstruction","IsZero","GetSlot","LoadConstant","RegToSlot",
|
||||
"RegisterTransfer","FunctionCall","Label","SlotToReg","LoadConstant",
|
||||
"OperatorInstruction","IsZero","SlotToReg","LoadConstant","RegToSlot",
|
||||
"LoadConstant","RegToSlot","LoadConstant","RegToSlot","LoadConstant",
|
||||
"RegToSlot","RegisterTransfer","FunctionCall","Label","GetSlot",
|
||||
"GetSlot","RegisterTransfer","Syscall","RegisterTransfer","RegisterTransfer",
|
||||
"RegToSlot","Label","FunctionReturn","RegisterTransfer","GetSlot",
|
||||
"GetSlot","Branch","Label","Label","FunctionReturn",
|
||||
"RegisterTransfer","GetSlot","GetSlot","Label","FunctionReturn",
|
||||
"RegToSlot","RegisterTransfer","FunctionCall","Label","SlotToReg",
|
||||
"SlotToReg","RegisterTransfer","Syscall","RegisterTransfer","RegisterTransfer",
|
||||
"RegToSlot","Label","FunctionReturn","RegisterTransfer","SlotToReg",
|
||||
"SlotToReg","Branch","Label","Label","FunctionReturn",
|
||||
"RegisterTransfer","SlotToReg","SlotToReg","Label","FunctionReturn",
|
||||
"RegisterTransfer","Syscall","NilClass"]
|
||||
end
|
||||
end
|
||||
|
@ -19,7 +19,7 @@ HERE
|
||||
|
||||
def test_mult
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","LoadConstant",
|
||||
"LoadConstant","OperatorInstruction","RegToSlot","Label","FunctionReturn",
|
||||
"RegisterTransfer","Syscall","NilClass"]
|
||||
|
@ -17,7 +17,7 @@ HERE
|
||||
|
||||
def test_add
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","LoadConstant",
|
||||
"LoadConstant","OperatorInstruction","RegToSlot","Label","FunctionReturn",
|
||||
"RegisterTransfer","Syscall","NilClass"]
|
||||
|
@ -17,13 +17,13 @@ HERE
|
||||
|
||||
def test_chain
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","GetSlot",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","SlotToReg",
|
||||
"LoadConstant","RegToSlot","LoadConstant","RegToSlot","LoadConstant",
|
||||
"RegToSlot","LoadConstant","RegToSlot","RegisterTransfer","FunctionCall",
|
||||
"Label","GetSlot","GetSlot","RegisterTransfer","Syscall",
|
||||
"Label","SlotToReg","SlotToReg","RegisterTransfer","Syscall",
|
||||
"RegisterTransfer","RegisterTransfer","RegToSlot","Label","FunctionReturn",
|
||||
"RegisterTransfer","GetSlot","GetSlot","Label","FunctionReturn",
|
||||
"RegisterTransfer","SlotToReg","SlotToReg","Label","FunctionReturn",
|
||||
"RegisterTransfer","Syscall","NilClass"]
|
||||
end
|
||||
|
||||
@ -39,7 +39,7 @@ HERE
|
||||
assert_equal :r2, @interpreter.instruction.array.symbol
|
||||
end
|
||||
def test_get
|
||||
assert_equal Register::GetSlot , ticks(4).class
|
||||
assert_equal Register::SlotToReg , ticks(4).class
|
||||
assert @interpreter.get_register( :r1 )
|
||||
assert Integer , @interpreter.get_register( :r1 ).class
|
||||
end
|
||||
|
@ -20,13 +20,13 @@ HERE
|
||||
|
||||
def test_chain
|
||||
#show_ticks # get output of what is
|
||||
check_chain ["Branch","Label","LoadConstant","GetSlot","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","GetSlot",
|
||||
check_chain ["Branch","Label","LoadConstant","SlotToReg","RegToSlot",
|
||||
"LoadConstant","RegToSlot","FunctionCall","Label","SlotToReg",
|
||||
"LoadConstant","RegToSlot","LoadConstant","RegToSlot","LoadConstant",
|
||||
"RegToSlot","LoadConstant","RegToSlot","LoadConstant","RegToSlot",
|
||||
"RegisterTransfer","FunctionCall","Label","GetSlot","GetSlot",
|
||||
"RegisterTransfer","FunctionCall","Label","SlotToReg","SlotToReg",
|
||||
"GetByte","RegToSlot","Label","FunctionReturn","RegisterTransfer",
|
||||
"GetSlot","GetSlot","Label","FunctionReturn","RegisterTransfer",
|
||||
"SlotToReg","SlotToReg","Label","FunctionReturn","RegisterTransfer",
|
||||
"Syscall","NilClass"]
|
||||
end
|
||||
|
||||
@ -42,7 +42,7 @@ HERE
|
||||
assert_equal :r2, @interpreter.instruction.array.symbol
|
||||
end
|
||||
def test_get
|
||||
assert_equal Register::GetSlot , ticks(4).class
|
||||
assert_equal Register::SlotToReg , ticks(4).class
|
||||
assert @interpreter.get_register( :r1 )
|
||||
assert Integer , @interpreter.get_register( :r1 ).class
|
||||
end
|
||||
|
@ -9,7 +9,7 @@ class TestAssignStatement < MiniTest::Test
|
||||
|
||||
@input = s(:statements, s(:assignment, s(:name, :r), s(:operator_value, :+, s(:int, 10), s(:int, 1))))
|
||||
|
||||
@expect = [Label, LoadConstant, LoadConstant, OperatorInstruction, GetSlot, RegToSlot, Label ,
|
||||
@expect = [Label, LoadConstant, LoadConstant, OperatorInstruction, SlotToReg, RegToSlot, Label ,
|
||||
FunctionReturn]
|
||||
check
|
||||
end
|
||||
@ -18,7 +18,7 @@ class TestAssignStatement < MiniTest::Test
|
||||
Register.machine.space.get_main.add_local(:r , :Integer)
|
||||
@input =s(:statements, s(:assignment, s(:name, :r), s(:int, 5)))
|
||||
|
||||
@expect = [Label, LoadConstant, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
@ -27,34 +27,34 @@ class TestAssignStatement < MiniTest::Test
|
||||
|
||||
@input = s(:statements, s(:assignment, s(:name, :r), s(:int, 5)))
|
||||
|
||||
@expect = [Label, LoadConstant, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
def test_assign_call
|
||||
Register.machine.space.get_main.add_local(:r , :Integer)
|
||||
@input = s(:statements, s(:assignment, s(:name, :r), s(:call, s(:name, :main), s(:arguments))))
|
||||
@expect = [Label, GetSlot, GetSlot, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label, RegisterTransfer ,
|
||||
GetSlot, GetSlot, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
SlotToReg, SlotToReg, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
def test_named_list_get
|
||||
Register.machine.space.get_main.add_local(:r , :Integer)
|
||||
@input = s(:statements, s(:assignment, s(:name, :r), s(:int, 5)), s(:return, s(:name, :r)))
|
||||
@expect = [Label, LoadConstant, GetSlot, RegToSlot, GetSlot, GetSlot, RegToSlot ,
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot ,
|
||||
Label, FunctionReturn]
|
||||
was = check
|
||||
get = was.next(5)
|
||||
assert_equal GetSlot , get.class
|
||||
assert_equal SlotToReg , get.class
|
||||
assert_equal 1, get.index , "Get to named_list index must be offset, not #{get.index}"
|
||||
end
|
||||
|
||||
def test_assign_int
|
||||
Register.machine.space.get_main.add_local(:r , :Integer)
|
||||
@input = s(:statements, s(:assignment, s(:name, :r), s(:int, 5)) )
|
||||
@expect = [Label, LoadConstant, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
was = check
|
||||
set = was.next(3)
|
||||
assert_equal RegToSlot , set.class
|
||||
@ -75,10 +75,10 @@ class TestAssignStatement < MiniTest::Test
|
||||
# have to define bar externally, just because redefining main. Otherwise that would be automatic
|
||||
Register.machine.space.get_main.add_argument(:balr , :Integer)
|
||||
@input = s(:statements, s(:return, s(:name, :balr)))
|
||||
@expect = [Label, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
@expect = [Label, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
was = check
|
||||
get = was.next(1)
|
||||
assert_equal GetSlot , get.class
|
||||
assert_equal SlotToReg , get.class
|
||||
assert_equal 1, get.index , "Get to args index must be offset, not #{get.index}"
|
||||
end
|
||||
end
|
||||
|
@ -7,9 +7,9 @@ class TestCallStatement < MiniTest::Test
|
||||
def test_call_constant_int
|
||||
clean_compile :Integer, :puti, {}, s(:statements, s(:return, s(:int, 1)))
|
||||
@input = s(:call, s(:name, :puti), s(:arguments), s(:receiver, s(:int, 42)))
|
||||
@expect = [Label, GetSlot, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
@expect = [Label, SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label, RegisterTransfer ,
|
||||
GetSlot, GetSlot, Label, FunctionReturn]
|
||||
SlotToReg, SlotToReg, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
@ -18,9 +18,9 @@ class TestCallStatement < MiniTest::Test
|
||||
clean_compile :Word, :putstr,{}, s(:statements, s(:return, s(:int, 1)))
|
||||
|
||||
@input =s(:call, s(:name, :putstr), s(:arguments), s(:receiver, s(:string, "Hello")))
|
||||
@expect = [Label, GetSlot, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
@expect = [Label, SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label, RegisterTransfer ,
|
||||
GetSlot, GetSlot, Label, FunctionReturn]
|
||||
SlotToReg, SlotToReg, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
@ -29,9 +29,9 @@ class TestCallStatement < MiniTest::Test
|
||||
clean_compile :Integer, :putint, {}, s(:statements, s(:return, s(:int, 1)))
|
||||
@input = s(:statements, s(:assignment, s(:name, :testi), s(:int, 20)), s(:call, s(:name, :putint), s(:arguments), s(:receiver, s(:name, :testi))))
|
||||
|
||||
@expect = [Label, LoadConstant, GetSlot, RegToSlot, GetSlot, GetSlot, GetSlot ,
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg ,
|
||||
RegToSlot, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant, RegToSlot ,
|
||||
RegisterTransfer, FunctionCall, Label, RegisterTransfer, GetSlot, GetSlot, Label ,
|
||||
RegisterTransfer, FunctionCall, Label, RegisterTransfer, SlotToReg, SlotToReg, Label ,
|
||||
FunctionReturn]
|
||||
check
|
||||
end
|
||||
@ -41,9 +41,9 @@ class TestCallStatement < MiniTest::Test
|
||||
clean_compile :List, :add, {}, s(:statements, s(:return, s(:int, 1)))
|
||||
|
||||
@input =s(:statements, s(:call, s(:name, :add), s(:arguments), s(:receiver, s(:name, :test_l))))
|
||||
@expect = [Label, GetSlot, GetSlot, GetSlot, RegToSlot, LoadConstant, RegToSlot ,
|
||||
@expect = [Label, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot ,
|
||||
LoadConstant, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label ,
|
||||
RegisterTransfer, GetSlot, GetSlot, Label, FunctionReturn]
|
||||
RegisterTransfer, SlotToReg, SlotToReg, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
@ -58,9 +58,9 @@ int main()
|
||||
end
|
||||
end
|
||||
HERE
|
||||
@expect = [Label, GetSlot, GetSlot, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
RegToSlot, LoadConstant, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall ,
|
||||
Label, RegisterTransfer, GetSlot, GetSlot, Label, FunctionReturn]
|
||||
Label, RegisterTransfer, SlotToReg, SlotToReg, Label, FunctionReturn]
|
||||
was = check
|
||||
set = was.next(7)
|
||||
assert_equal RegToSlot , set.class
|
||||
|
@ -20,9 +20,9 @@ class TestClassStatements < MiniTest::Test
|
||||
# class_def
|
||||
# @input = s(:statements, s(:return, s(:call, s(:name, :buh), s(:arguments), s(:receiver, s(:class_name, :Bar)))))
|
||||
#
|
||||
# @expect = [Label, GetSlot, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
# @expect = [Label, SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
# RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label, RegisterTransfer ,
|
||||
# GetSlot, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
# SlotToReg, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
# check
|
||||
end
|
||||
|
||||
@ -31,7 +31,7 @@ class TestClassStatements < MiniTest::Test
|
||||
#FIXME class_field handling unclear at the moment
|
||||
# @input =s(:statements, s(:return, s(:field_access, s(:receiver, s(:name, :self)),
|
||||
# s(:field,s(:name, :boo2)))))
|
||||
# @expect = [Label, GetSlot,GetSlot,RegToSlot,Label,FunctionReturn]
|
||||
# @expect = [Label, SlotToReg,SlotToReg,RegToSlot,Label,FunctionReturn]
|
||||
# check
|
||||
end
|
||||
end
|
||||
|
@ -9,7 +9,7 @@ module Register
|
||||
Register.machine.space.get_main.add_local( :m , :Message)
|
||||
@input = s(:statements, s(:return, s(:field_access,
|
||||
s(:receiver, s(:name, :m)), s(:field, s(:name, :name)))))
|
||||
@expect = [Label, GetSlot, GetSlot, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
@expect = [Label, SlotToReg, SlotToReg, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
@ -20,9 +20,9 @@ module Register
|
||||
s(:receiver, s(:name, :main)), s(:field, s(:name, :name)))))
|
||||
@input =s(:statements, s(:return, s(:call, s(:name, :get_name), s(:arguments, s(:name, :m)))))
|
||||
|
||||
@expect = [Label, GetSlot, GetSlot, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
RegToSlot, GetSlot, GetSlot, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer ,
|
||||
FunctionCall, Label, RegisterTransfer, GetSlot, GetSlot, RegToSlot, Label ,
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
RegToSlot, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer ,
|
||||
FunctionCall, Label, RegisterTransfer, SlotToReg, SlotToReg, RegToSlot, Label ,
|
||||
FunctionReturn]
|
||||
check
|
||||
end
|
||||
@ -31,7 +31,7 @@ module Register
|
||||
Register.machine.space.get_main.add_local(:name , :Word)
|
||||
@input = s(:statements, s(:assignment, s(:name, :name), s(:field_access, s(:receiver, s(:name, :message)), s(:field, s(:name, :name)))), s(:return, s(:name, :name)))
|
||||
|
||||
@expect = [Label, RegisterTransfer, GetSlot, GetSlot, RegToSlot, GetSlot, GetSlot ,
|
||||
@expect = [Label, RegisterTransfer, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg ,
|
||||
RegToSlot, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
@ -13,30 +13,30 @@ class TestReturnStatement < MiniTest::Test
|
||||
def test_return_local
|
||||
Register.machine.space.get_main.add_local(:runner , :Integer)
|
||||
@input = s(:statements, s(:return, s(:name, :runner)))
|
||||
@expect = [Label, GetSlot,GetSlot ,RegToSlot,Label,FunctionReturn]
|
||||
@expect = [Label, SlotToReg,SlotToReg ,RegToSlot,Label,FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
def test_return_local_assign
|
||||
Register.machine.space.get_main.add_local(:runner , :Integer)
|
||||
@input = s(:statements, s(:assignment, s(:name, :runner), s(:int, 5)), s(:return, s(:name, :runner)))
|
||||
@expect = [Label, LoadConstant,GetSlot,RegToSlot,GetSlot,GetSlot ,RegToSlot,
|
||||
@expect = [Label, LoadConstant,SlotToReg,RegToSlot,SlotToReg,SlotToReg ,RegToSlot,
|
||||
Label,FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
def test_return_call
|
||||
@input =s(:statements, s(:return, s(:call, s(:name, :main), s(:arguments))))
|
||||
@expect = [Label, GetSlot, GetSlot, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label, RegisterTransfer ,
|
||||
GetSlot, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
SlotToReg, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
def pest_return_space_length # need to add runtime first
|
||||
Register.machine.space.get_main.add_local(:l , :Type)
|
||||
@input = s(:statements, s(:assignment, s(:name, :l), s(:call, s(:name, :get_type), s(:arguments), s(:receiver, s(:name, :space)))), s(:return, s(:field_access, s(:receiver, s(:name, :self)), s(:field, s(:name, :runner)))))
|
||||
@expect = [Label, GetSlot,GetSlot ,RegToSlot,Label,FunctionReturn]
|
||||
@expect = [Label, SlotToReg,SlotToReg ,RegToSlot,Label,FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
|
@ -18,9 +18,9 @@ module Register
|
||||
|
||||
@input = s(:statements, s(:assignment, s(:name, :n), s(:int, 5)), s(:while_statement, :plus, s(:conditional, s(:name, :n)), s(:statements, s(:assignment, s(:name, :n), s(:operator_value, :-, s(:name, :n), s(:int, 1))))), s(:return, s(:name, :n)))
|
||||
|
||||
@expect = [Label, LoadConstant, GetSlot, RegToSlot, Branch, Label, GetSlot ,
|
||||
GetSlot, LoadConstant, OperatorInstruction, GetSlot, RegToSlot, Label, GetSlot ,
|
||||
GetSlot, IsPlus, GetSlot, GetSlot, RegToSlot, Label, FunctionReturn]
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, Branch, Label, SlotToReg ,
|
||||
SlotToReg, LoadConstant, OperatorInstruction, SlotToReg, RegToSlot, Label, SlotToReg ,
|
||||
SlotToReg, IsPlus, SlotToReg, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
||||
@ -30,9 +30,9 @@ module Register
|
||||
|
||||
@input = s(:statements, s(:assignment, s(:name, :n), s(:int, 10)), s(:while_statement, :plus, s(:conditional, s(:operator_value, :-, s(:name, :n), s(:int, 5))), s(:statements, s(:assignment, s(:name, :n), s(:operator_value, :+, s(:name, :n), s(:int, 1))), s(:return, s(:name, :n)))))
|
||||
|
||||
@expect = [Label, LoadConstant, GetSlot, RegToSlot, Branch, Label, GetSlot ,
|
||||
GetSlot, LoadConstant, OperatorInstruction, GetSlot, RegToSlot, GetSlot, GetSlot ,
|
||||
RegToSlot, Label, GetSlot, GetSlot, LoadConstant, OperatorInstruction, IsPlus ,
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, Branch, Label, SlotToReg ,
|
||||
SlotToReg, LoadConstant, OperatorInstruction, SlotToReg, RegToSlot, SlotToReg, SlotToReg ,
|
||||
RegToSlot, Label, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsPlus ,
|
||||
Label, FunctionReturn]
|
||||
check
|
||||
end
|
||||
|
Reference in New Issue
Block a user