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:
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.plus"
|
||||
@string_input = as_main("a = 5 + 5 ; return a")
|
||||
super
|
||||
end
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.plus"
|
||||
@string_input = as_main("a = 5 ;a = 5 + a ;a = 5 + a ; return a")
|
||||
super
|
||||
end
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.plus"
|
||||
@string_input = as_main("a = 5 ;a = 5 + a ; return a")
|
||||
super
|
||||
end
|
||||
|
@ -4,6 +4,7 @@ module Risc
|
||||
class BlockCallSimple < MiniTest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = "Integer.div4"
|
||||
@string_input = block_main("a = yielder {return 16.div4} ; return a")
|
||||
super
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Risc
|
||||
class BlockCallSimpleWithArg# < MiniTest::Test
|
||||
class BlockCallSimpleWithArg < MiniTest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@string_input = block_main("a = tenner {|b| return b} ; return a" , tenner)
|
||||
@ -15,6 +15,7 @@ module Risc
|
||||
class BlockCallArgOp < MiniTest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = "Integer.mul"
|
||||
@string_input = block_main("a = tenner {|b| return 2 * b} ; return a" , tenner)
|
||||
super
|
||||
end
|
||||
|
@ -4,6 +4,7 @@ module Risc
|
||||
class BlockCallDyn < MiniTest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = "Integer.div4"
|
||||
@string_input = block_main("a = tenner {|b| return b.div4} ; return a" , tenner)
|
||||
super
|
||||
end
|
||||
@ -16,6 +17,7 @@ module Risc
|
||||
class BlockCallArgOpDyn < MiniTest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = "Integer.mul"
|
||||
@string_input = block_main("a = tenner {|b| return b*b} ; return a" , tenner)
|
||||
super
|
||||
end
|
||||
|
@ -4,6 +4,7 @@ module Risc
|
||||
module BlockIfOp
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = "Integer.gt;Integer.lt"
|
||||
@string_input = block_main("a = tenner {|b| if( b #{op} 5 ); return 1;else;return 2;end } ; return a" , tenner)
|
||||
super
|
||||
end
|
||||
|
@ -4,6 +4,7 @@ module Risc
|
||||
class BlockWhile < MiniTest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = "Integer.gt;Integer.minus"
|
||||
@string_input = block_main("a = tenner {|b| #{while_str} } ; return a" , tenner)
|
||||
super
|
||||
end
|
||||
|
@ -6,6 +6,7 @@ module Risc
|
||||
class IntCmp < Minitest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = [:le,:ge,:gt,:lt].collect{|op| "Integer.#{op}"}.join(";")
|
||||
end
|
||||
|
||||
def test_smaller_true
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
class IntMath < Minitest::Test
|
||||
include Ticker
|
||||
def setup
|
||||
@preload = "all"
|
||||
end
|
||||
|
||||
def test_add
|
||||
|
@ -6,23 +6,24 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.plus"
|
||||
@string_input = as_main("return 5 + 5")
|
||||
super
|
||||
end
|
||||
|
||||
def test_chain
|
||||
# show_main_ticks # get output of what is
|
||||
#show_main_ticks # get output of what is
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, #10
|
||||
SlotToReg, RegToSlot, SlotToReg, FunctionCall, LoadConstant, #15
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsNotZero, SlotToReg, #20
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, #25
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, SlotToReg, #30
|
||||
Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #35
|
||||
FunctionReturn, SlotToReg, RegToSlot, Branch, SlotToReg, #40
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #45
|
||||
FunctionReturn, Transfer, SlotToReg, SlotToReg, Syscall, #50
|
||||
NilClass,] #55
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, RegToSlot, #30
|
||||
Branch, Branch, SlotToReg, SlotToReg, RegToSlot, #35
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #40
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #45
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #50
|
||||
SlotToReg, SlotToReg, Syscall, NilClass,] #55
|
||||
assert_equal 10 , get_return
|
||||
end
|
||||
def base_ticks(num)
|
||||
|
@ -5,12 +5,13 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.div10"
|
||||
@string_input = as_main("return 25.div10")
|
||||
super
|
||||
end
|
||||
|
||||
def test_chain
|
||||
# show_main_ticks # get output of what is
|
||||
#show_main_ticks # get output of what is
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, #10
|
||||
FunctionCall, LoadConstant, SlotToReg, LoadConstant, OperatorInstruction, #15
|
||||
@ -22,11 +23,11 @@ module Risc
|
||||
LoadData, OperatorInstruction, LoadData, Transfer, OperatorInstruction, #45
|
||||
OperatorInstruction, Transfer, LoadData, OperatorInstruction, LoadData, #50
|
||||
OperatorInstruction, OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, #55
|
||||
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, #60
|
||||
SlotToReg, FunctionReturn, SlotToReg, RegToSlot, Branch, #65
|
||||
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, #70
|
||||
SlotToReg, FunctionReturn, Transfer, SlotToReg, SlotToReg, #75
|
||||
Syscall, NilClass,] #80
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #60
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #65
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #70
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #75
|
||||
SlotToReg, SlotToReg, Syscall, NilClass,] #80
|
||||
assert_equal 2 , get_return
|
||||
end
|
||||
|
||||
@ -36,7 +37,7 @@ module Risc
|
||||
assert_equal 25 , @interpreter.get_register(load_ins.register).value
|
||||
end
|
||||
def test_return_class
|
||||
ret = main_ticks(72)
|
||||
ret = main_ticks(74)
|
||||
assert_equal FunctionReturn , ret.class
|
||||
link = @interpreter.get_register( ret.register )
|
||||
assert_equal ::Integer , link.class
|
||||
|
@ -5,7 +5,8 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@string_input = as_main("return 'Hello'.get_internal_byte(0)")
|
||||
@preload = "Word.get"
|
||||
@string_input = as_main("return 'Hello'.get_internal_byte(0)")
|
||||
super
|
||||
end
|
||||
def test_chain
|
||||
@ -15,11 +16,12 @@ module Risc
|
||||
SlotToReg, RegToSlot, SlotToReg, FunctionCall, LoadConstant, #15
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsNotZero, SlotToReg, #20
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, ByteToReg, #25
|
||||
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, #30
|
||||
Branch, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, #35
|
||||
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, #40
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, #45
|
||||
Transfer, SlotToReg, SlotToReg, Syscall, NilClass,] #50
|
||||
RegToSlot, RegToSlot, SlotToReg, RegToSlot, Branch, #30
|
||||
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, #35
|
||||
SlotToReg, FunctionReturn, SlotToReg, RegToSlot, Branch, #40
|
||||
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, #45
|
||||
SlotToReg, FunctionReturn, Transfer, SlotToReg, SlotToReg, #50
|
||||
Syscall, NilClass,] #55
|
||||
assert_equal "H".ord , get_return
|
||||
end
|
||||
def test_byte_to_reg
|
||||
|
@ -5,23 +5,24 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.minus"
|
||||
@string_input = as_main("return 6 - 5")
|
||||
super
|
||||
end
|
||||
|
||||
def test_minus
|
||||
#show_main_ticks # get output of what is
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, #10
|
||||
SlotToReg, RegToSlot, SlotToReg, FunctionCall, LoadConstant, #15
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsNotZero, SlotToReg, #20
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, #25
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, SlotToReg, #30
|
||||
Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #35
|
||||
FunctionReturn, SlotToReg, RegToSlot, Branch, SlotToReg, #40
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #45
|
||||
FunctionReturn, Transfer, SlotToReg, SlotToReg, Syscall, #50
|
||||
NilClass,] #55
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, RegToSlot, #30
|
||||
Branch, Branch, SlotToReg, SlotToReg, RegToSlot, #35
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #40
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #45
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #50
|
||||
SlotToReg, SlotToReg, Syscall, NilClass,] #55
|
||||
assert_equal 1 , get_return
|
||||
end
|
||||
def test_op
|
||||
@ -34,10 +35,10 @@ module Risc
|
||||
assert_equal 5 , @interpreter.get_register(:r3)
|
||||
end
|
||||
def test_return
|
||||
ret = main_ticks(46)
|
||||
ret = main_ticks(49)
|
||||
assert_equal FunctionReturn , ret.class
|
||||
assert_equal :r3 , ret.register.symbol
|
||||
assert_equal 40220 , @interpreter.get_register(ret.register)
|
||||
assert_equal 38140 , @interpreter.get_register(ret.register)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -5,22 +5,23 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.div4"
|
||||
@string_input = as_main "return 9.div4"
|
||||
super
|
||||
end
|
||||
|
||||
def test_chain
|
||||
#show_main_ticks # get output of what is
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, #10
|
||||
FunctionCall, LoadConstant, SlotToReg, LoadConstant, OperatorInstruction, #15
|
||||
IsNotZero, SlotToReg, RegToSlot, SlotToReg, SlotToReg, #20
|
||||
LoadData, OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, #25
|
||||
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, #30
|
||||
SlotToReg, FunctionReturn, SlotToReg, RegToSlot, Branch, #35
|
||||
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, #40
|
||||
SlotToReg, FunctionReturn, Transfer, SlotToReg, SlotToReg, #45
|
||||
Syscall, NilClass,] #50
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #30
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #35
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #40
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #45
|
||||
SlotToReg, SlotToReg, Syscall, NilClass,] #50
|
||||
assert_equal 2 , get_return
|
||||
end
|
||||
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.mul"
|
||||
@string_input = as_main "return #{2**31} * #{2**31}"
|
||||
super
|
||||
end
|
||||
@ -16,12 +17,12 @@ module Risc
|
||||
SlotToReg, RegToSlot, SlotToReg, FunctionCall, LoadConstant, #15
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsNotZero, SlotToReg, #20
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, #25
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, SlotToReg, #30
|
||||
Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #35
|
||||
FunctionReturn, SlotToReg, RegToSlot, Branch, SlotToReg, #40
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #45
|
||||
FunctionReturn, Transfer, SlotToReg, SlotToReg, Syscall, #50
|
||||
NilClass,] #55
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, RegToSlot, #30
|
||||
Branch, Branch, SlotToReg, SlotToReg, RegToSlot, #35
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #40
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #45
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #50
|
||||
SlotToReg, SlotToReg, Syscall, NilClass,] #55
|
||||
assert_equal 0 , get_return
|
||||
end
|
||||
def test_zero
|
||||
|
@ -5,23 +5,24 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.plus"
|
||||
@string_input = as_main("return 5 + 5")
|
||||
super
|
||||
end
|
||||
|
||||
def test_chain
|
||||
#show_main_ticks # get output of what is
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, #10
|
||||
SlotToReg, RegToSlot, SlotToReg, FunctionCall, LoadConstant, #15
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsNotZero, SlotToReg, #20
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, #25
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, SlotToReg, #30
|
||||
Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #35
|
||||
FunctionReturn, SlotToReg, RegToSlot, Branch, SlotToReg, #40
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #45
|
||||
FunctionReturn, Transfer, SlotToReg, SlotToReg, Syscall, #50
|
||||
NilClass,] #55
|
||||
OperatorInstruction, RegToSlot, RegToSlot, SlotToReg, RegToSlot, #30
|
||||
Branch, Branch, SlotToReg, SlotToReg, RegToSlot, #35
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #40
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #45
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #50
|
||||
SlotToReg, SlotToReg, Syscall, NilClass,] #55
|
||||
assert_equal 10 , get_return
|
||||
end
|
||||
def base_ticks(num)
|
||||
@ -67,11 +68,11 @@ module Risc
|
||||
end
|
||||
def test_move_fix_to_result
|
||||
sl = base_ticks( 15 )
|
||||
assert_slot_to_reg( sl , :r0 , 5 , :r1)
|
||||
assert_slot_to_reg( sl , :r0 , 5 , :r2)
|
||||
end
|
||||
def test_start_return_sequence
|
||||
def test_move_fix_to_result
|
||||
sl = base_ticks( 16 )
|
||||
assert_slot_to_reg( sl , :r0 , 6 , :r2)
|
||||
assert_reg_to_slot( sl , :r2 , :r0 , 5)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Word.put"
|
||||
@string_input = as_main(" return 'Hello again'.putstring ")
|
||||
super
|
||||
end
|
||||
@ -16,11 +17,12 @@ module Risc
|
||||
FunctionCall, LoadConstant, SlotToReg, LoadConstant, OperatorInstruction, #15
|
||||
IsNotZero, SlotToReg, RegToSlot, RegToSlot, SlotToReg, #20
|
||||
SlotToReg, Transfer, Syscall, Transfer, Transfer, #25
|
||||
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, #30
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, #35
|
||||
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, #40
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, #45
|
||||
Transfer, SlotToReg, SlotToReg, Syscall, NilClass,] #50
|
||||
SlotToReg, RegToSlot, Branch, SlotToReg, RegToSlot, #30
|
||||
Branch, SlotToReg, SlotToReg, RegToSlot, SlotToReg, #35
|
||||
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, #40
|
||||
Branch, SlotToReg, SlotToReg, RegToSlot, SlotToReg, #45
|
||||
SlotToReg, SlotToReg, FunctionReturn, Transfer, SlotToReg, #50
|
||||
SlotToReg, Syscall, NilClass,] #55
|
||||
assert_equal "Hello again" , @interpreter.stdout
|
||||
assert_equal 11 , get_return #bytes written
|
||||
end
|
||||
@ -49,11 +51,11 @@ module Risc
|
||||
assert_equal Parfait::Message , @interpreter.get_register(:r0).class
|
||||
end
|
||||
def test_move_sys_return
|
||||
sl = main_ticks(31)
|
||||
sl = main_ticks(34)
|
||||
assert_reg_to_slot( sl , :r1 ,:r2 , 5)
|
||||
end
|
||||
def test_return
|
||||
done = main_ticks(45)
|
||||
done = main_ticks(48)
|
||||
assert_equal FunctionReturn , done.class
|
||||
end
|
||||
|
||||
|
@ -5,22 +5,23 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Word.set"
|
||||
@string_input = as_main("return 'Hello'.set_internal_byte(0,75)")
|
||||
super
|
||||
end
|
||||
|
||||
def test_chain
|
||||
#show_main_ticks # get output of what is
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, #5
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, #10
|
||||
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, #15
|
||||
SlotToReg, FunctionCall, SlotToReg, SlotToReg, RegToSlot, #20
|
||||
SlotToReg, SlotToReg, SlotToReg, RegToByte, SlotToReg, #25
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #30
|
||||
FunctionReturn, SlotToReg, RegToSlot, Branch, SlotToReg, #35
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, #40
|
||||
FunctionReturn, Transfer, SlotToReg, SlotToReg, Syscall, #45
|
||||
NilClass,] #50
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #30
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, #35
|
||||
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, #40
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, #45
|
||||
SlotToReg, SlotToReg, Syscall, NilClass,] #50
|
||||
assert_equal "K".ord , get_return
|
||||
end
|
||||
def test_reg_to_byte
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.gt"
|
||||
@string_input = as_main 'if( 5 > 5 ); return 1;else;return 2;end'
|
||||
super
|
||||
end
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.ge"
|
||||
@string_input = as_main 'if( 5 >= 5 ); return 1;else;return 2;end'
|
||||
super
|
||||
end
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.lt"
|
||||
@string_input = as_main 'if( 5 < 5 ); return 1;else;return 2;end'
|
||||
super
|
||||
end
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.le"
|
||||
@string_input = as_main 'if( 5 <= 5 ); return 1;else;return 2;end'
|
||||
super
|
||||
end
|
||||
|
@ -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
|
||||
|
@ -5,6 +5,7 @@ module Risc
|
||||
include Ticker
|
||||
|
||||
def setup
|
||||
@preload = "Integer.ge;Integer.plus"
|
||||
@string_input = as_main 'a = 0; while( 0 >= a); a = 1 + a;end;return a'
|
||||
super
|
||||
end
|
||||
|
@ -3,8 +3,10 @@ require_relative "../helper"
|
||||
module Risc
|
||||
class InterpreterWhileCount < MiniTest::Test
|
||||
include Ticker
|
||||
include Preloader
|
||||
|
||||
def setup
|
||||
@preload = "Integer.gt;Integer.plus"
|
||||
@string_input = as_main 'a = -1; while( 0 > a); a = 1 + a;end;return a'
|
||||
super
|
||||
end
|
||||
|
Reference in New Issue
Block a user