Lots of preloading for tests

so many relied (implicitly( on some builtin function
after all can't do much in ruby without calling
Now all those dependencies are explicit
Small risc changes come because the macro version has a return label and unreachable label
This commit is contained in:
2019-09-13 14:07:12 +03:00
parent c9d7539479
commit 12b29285d7
52 changed files with 201 additions and 164 deletions

View File

@ -5,35 +5,28 @@ module Risc
include Ticker
def setup
@preload = "Integer.div4"
@string_input = as_main("a = 5 ; return a.div4")
super
end
def test_chain
#show_main_ticks # get output of what is
check_main_chain [LoadConstant, RegToSlot, LoadConstant, SlotToReg, SlotToReg, #5
check_main_chain [LoadConstant, RegToSlot, LoadConstant, SlotToReg, SlotToReg, #5
SlotToReg, OperatorInstruction, IsZero, SlotToReg, SlotToReg, #10
LoadConstant, RegToSlot, LoadConstant, LoadConstant, SlotToReg, #15
SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg, #20
OperatorInstruction, IsZero, SlotToReg, Branch, LoadConstant, #25
OperatorInstruction, IsZero, SlotToReg, OperatorInstruction, IsZero, #30
SlotToReg, Branch, LoadConstant, OperatorInstruction, IsZero, #35
SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, #40
LoadConstant, OperatorInstruction, IsZero, SlotToReg, OperatorInstruction, #45
IsZero, SlotToReg, Branch, LoadConstant, OperatorInstruction, #50
IsZero, SlotToReg, OperatorInstruction, IsZero, SlotToReg, #55
Branch, LoadConstant, OperatorInstruction, IsZero, SlotToReg, #60
OperatorInstruction, IsZero, RegToSlot, LoadConstant, SlotToReg, #65
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, #70
LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, #75
SlotToReg, DynamicJump, LoadConstant, SlotToReg, LoadConstant, #80
OperatorInstruction, IsNotZero, SlotToReg, RegToSlot, SlotToReg, #85
SlotToReg, LoadData, OperatorInstruction, RegToSlot, RegToSlot, #90
SlotToReg, SlotToReg, RegToSlot, Branch, SlotToReg, #95
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, #100
Branch, SlotToReg, SlotToReg, RegToSlot, SlotToReg, #105
SlotToReg, SlotToReg, FunctionReturn, Transfer, SlotToReg, #110
SlotToReg, Syscall, NilClass,] #115
OperatorInstruction, IsZero, RegToSlot, LoadConstant, SlotToReg, #25
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, #30
LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, #35
SlotToReg, DynamicJump, LoadConstant, SlotToReg, LoadConstant, #40
OperatorInstruction, IsNotZero, SlotToReg, RegToSlot, SlotToReg, #45
SlotToReg, LoadData, OperatorInstruction, RegToSlot, RegToSlot, #50
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, #55
RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, #60
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, #65
RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, #70
Transfer, SlotToReg, SlotToReg, Syscall, NilClass,] #75
assert_equal ::Integer , get_return.class
assert_equal 1 , get_return
end
@ -50,16 +43,16 @@ module Risc
end
def test_dyn
cal = main_ticks(77)
cal = main_ticks(37)
assert_equal DynamicJump , cal.class
end
def test_return
ret = main_ticks(108)
ret = main_ticks(70)
assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register )
assert_equal ::Integer , link.class
end
def test_sys
def ttest_sys
sys = main_ticks(112)
assert_equal Syscall , sys.class
end