reducing the label's int for return

placing the raw address in the register to jump to
puts the extra instruction at the risc level (not arm), thus changing a
lot of (brittle?) tests
This commit is contained in:
Torsten Ruger 2018-05-30 12:54:40 +03:00
parent 01a2911483
commit 53107d3ef8
28 changed files with 202 additions and 176 deletions

View File

@ -27,6 +27,7 @@ module Mom
caller_index = Risc.resolve_to_index(:message , :caller) caller_index = Risc.resolve_to_index(:message , :caller)
return_index = Risc.resolve_to_index(:message , :return_address) return_index = Risc.resolve_to_index(:message , :return_address)
moves << Risc::SlotToReg.new(self, Risc.message_reg, return_index , return_address) moves << Risc::SlotToReg.new(self, Risc.message_reg, return_index , return_address)
moves << Risc::SlotToReg.new( self , return_address , Parfait::Integer.integer_index , return_address)
moves << Risc::SlotToReg.new(self, Risc.message_reg , caller_index , Risc.message_reg) moves << Risc::SlotToReg.new(self, Risc.message_reg , caller_index , Risc.message_reg)
moves << Risc::FunctionReturn.new(self, return_address) moves << Risc::FunctionReturn.new(self, return_address)
end end

View File

@ -226,7 +226,7 @@ module Risc
def execute_FunctionReturn def execute_FunctionReturn
link = get_register( @instruction.register ) link = get_register( @instruction.register )
log.debug "Return to #{link}" log.debug "Return to #{link}"
set_pc link.value set_pc link
false false
end end

View File

@ -14,7 +14,7 @@ module Risc
RegToSlot, SlotToReg, FunctionCall, Label, SlotToReg, RegToSlot, SlotToReg, FunctionCall, Label, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn] SlotToReg, FunctionReturn]
end end
def test_return_instructions def test_return_instructions
@ -22,7 +22,7 @@ module Risc
end end
def test_function_return def test_function_return
produced = produce_body produced = produce_body
assert_equal FunctionReturn , produced.next(35).class assert_equal FunctionReturn , produced.next(36).class
end end
def test_load_5 def test_load_5
produced = produce_body produced = produce_body

View File

@ -22,7 +22,8 @@ module Risc
LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant,
SlotToReg, DynamicJump, Label, SlotToReg, SlotToReg, SlotToReg, DynamicJump, Label, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn] SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
FunctionReturn]
end end
def test_return_instructions def test_return_instructions
@ -30,7 +31,7 @@ module Risc
end end
def test_function_return def test_function_return
produced = produce_body produced = produce_body
assert_equal FunctionReturn , produced.next(79).class assert_equal FunctionReturn , produced.next(80).class
end end
def test_cache_check def test_cache_check
produced = produce_body produced = produce_body

View File

@ -7,8 +7,8 @@ module Risc
def setup def setup
super super
@input = "return 5" @input = "return 5"
@expect = [LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg , @expect = [LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, FunctionReturn] SlotToReg, SlotToReg, SlotToReg, FunctionReturn]
end end
def test_return_instructions def test_return_instructions
@ -16,7 +16,7 @@ module Risc
end end
def test_function_return def test_function_return
produced = produce_body produced = produce_body
assert_equal FunctionReturn , produced.next(7).class assert_equal FunctionReturn , produced.next(8).class
end end
def test_load_5 def test_load_5
produced = produce_body produced = produce_body

View File

@ -13,7 +13,8 @@ module Risc
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, check_main_chain [LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal 15 , get_return.value assert_equal 15 , get_return.value
end end
@ -29,17 +30,17 @@ module Risc
assert_equal 15 , @interpreter.get_register(load_ins.register).value assert_equal 15 , @interpreter.get_register(load_ins.register).value
end end
def test_return def test_return
ret = main_ticks(12) ret = main_ticks(13)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Parfait::Integer , link.class assert_equal Fixnum , link.class
end end
def test_transfer def test_transfer
transfer = main_ticks(13) transfer = main_ticks(14)
assert_equal Transfer , transfer.class assert_equal Transfer , transfer.class
end end
def test_sys def test_sys
sys = main_ticks(14) sys = main_ticks(15)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
end end
end end

View File

@ -20,10 +20,11 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
Transfer, Syscall, NilClass] SlotToReg, Branch, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal 10 , get_return.value assert_equal 10 , get_return.value
end end
end end

View File

@ -21,20 +21,21 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant,
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot,
SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot,
Branch, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, Branch, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, FunctionCall, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, Branch,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, Branch,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn,
Transfer, Syscall, NilClass]
assert_equal 15 , get_return.value assert_equal 15 , get_return.value
end end

View File

@ -21,10 +21,10 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant,
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot,
SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
Branch, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg,
Transfer, Syscall, NilClass] SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal 10 , get_return.value assert_equal 10 , get_return.value
end end
end end

View File

@ -25,10 +25,11 @@ module Risc
Transfer, LoadData, OperatorInstruction, LoadData, OperatorInstruction, Transfer, LoadData, OperatorInstruction, LoadData, OperatorInstruction,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot,
Branch, RegToSlot, RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn,
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, Branch, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer,
Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 2 , get_return.value assert_equal 2 , get_return.value
end end
@ -38,14 +39,14 @@ module Risc
assert_equal LoadConstant , load_ins.class assert_equal LoadConstant , load_ins.class
assert_equal 25 , @interpreter.get_register(load_ins.register).value assert_equal 25 , @interpreter.get_register(load_ins.register).value
end end
def test_return def test_return_class
ret = main_ticks(74) ret = main_ticks(75)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Parfait::Integer , link.class assert_equal Fixnum , link.class
end end
def test_sys def test_sys
sys = main_ticks(89) sys = main_ticks(91)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -19,10 +19,10 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, ByteToReg, LoadConstant, SlotToReg, SlotToReg, SlotToReg, ByteToReg, LoadConstant,
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot,
SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
Syscall, NilClass] Branch, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal "H".ord , get_return.value assert_equal "H".ord , get_return.value
end end
@ -32,7 +32,7 @@ module Risc
assert_equal "H".ord , @interpreter.get_register(done.register) assert_equal "H".ord , @interpreter.get_register(done.register)
end end
def test_exit def test_exit
done = main_ticks(61) done = main_ticks(64)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -20,10 +20,11 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
Transfer, Syscall, NilClass] SlotToReg, Branch, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 1 , get_return.value assert_equal 1 , get_return.value
end end
@ -41,8 +42,14 @@ module Risc
assert_equal 5 , @interpreter.get_register(:r2) assert_equal 5 , @interpreter.get_register(:r2)
assert_equal 1 , @interpreter.get_register(:r1) assert_equal 1 , @interpreter.get_register(:r1)
end end
def test_return
ret = main_ticks(63)
assert_equal FunctionReturn , ret.class
assert_equal :r1 , ret.register.symbol
assert_equal 18628 , @interpreter.get_register(ret.register)
end
def test_sys def test_sys
sys = main_ticks(62) sys = main_ticks(65)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -19,10 +19,10 @@ module Risc
SlotToReg, LoadData, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, LoadData, OperatorInstruction, LoadConstant, SlotToReg,
SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg, SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, Branch, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
Syscall, NilClass] FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 2 , get_return.value assert_equal 2 , get_return.value
end end
@ -42,7 +42,7 @@ module Risc
end end
def test_sys def test_sys
sys = main_ticks(56) sys = main_ticks(58)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -20,13 +20,18 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
Transfer, Syscall, NilClass] SlotToReg, Branch, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 0 , get_return.value assert_equal 0 , get_return.value
end end
def test_zero
ticks( 12 )
assert @interpreter.flags[:zero]
end
def test_op def test_op
op = main_ticks(35) op = main_ticks(35)
assert_equal OperatorInstruction , op.class assert_equal OperatorInstruction , op.class
@ -39,9 +44,5 @@ module Risc
main_ticks( 37 ) main_ticks( 37 )
assert @interpreter.flags[:overflow] assert @interpreter.flags[:overflow]
end end
def test_zero
ticks( 12 )
assert @interpreter.flags[:zero]
end
end end
end end

View File

@ -20,10 +20,11 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
Transfer, Syscall, NilClass] SlotToReg, Branch, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 10 , get_return.value assert_equal 10 , get_return.value
end end
@ -102,7 +103,7 @@ module Risc
assert_equal :r4 , sl.register.symbol assert_equal :r4 , sl.register.symbol
end end
def test_sys def test_sys
sys = main_ticks(62) sys = main_ticks(65)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -19,10 +19,11 @@ module Risc
SlotToReg, Transfer, Syscall, Transfer, Transfer, SlotToReg, Transfer, Syscall, Transfer, Transfer,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
RegToSlot, Branch, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, Branch, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal "Hello again" , @interpreter.stdout assert_equal "Hello again" , @interpreter.stdout
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 11 , get_return.value #bytes written assert_equal 11 , get_return.value #bytes written
@ -63,7 +64,7 @@ module Risc
assert_equal 2 , sl.index assert_equal 2 , sl.index
end end
def test_return def test_return
done = main_ticks(43) done = main_ticks(44)
assert_equal FunctionReturn , done.class assert_equal FunctionReturn , done.class
end end

View File

@ -20,10 +20,11 @@ module Risc
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg, RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
RegToByte, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToByte, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, Branch, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, Branch, SlotToReg, SlotToReg, FunctionReturn,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer,
Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "Kello" , get_return.to_string assert_equal "Kello" , get_return.to_string
end end
@ -33,7 +34,7 @@ module Risc
assert_equal "K".ord , @interpreter.get_register(done.register) assert_equal "K".ord , @interpreter.get_register(done.register)
end end
def test_exit def test_exit
done = main_ticks(64) done = main_ticks(66)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end

View File

@ -14,7 +14,7 @@ module Risc
check_main_chain [LoadConstant, LoadConstant, OperatorInstruction, IsZero, LoadConstant, check_main_chain [LoadConstant, LoadConstant, OperatorInstruction, IsZero, LoadConstant,
OperatorInstruction, IsZero, LoadConstant, RegToSlot, SlotToReg, OperatorInstruction, IsZero, LoadConstant, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, Branch, SlotToReg, SlotToReg, RegToSlot, SlotToReg, Branch, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "then" , get_return.to_string assert_equal "then" , get_return.to_string
end end
@ -39,7 +39,7 @@ module Risc
assert check.label.name.start_with?("false_label") , check.label.name assert check.label.name.start_with?("false_label") , check.label.name
end end
def test_exit def test_exit
done = main_ticks(18) done = main_ticks(19)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -20,16 +20,16 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
IsMinus, IsZero, LoadConstant, RegToSlot, SlotToReg, IsMinus, IsZero, LoadConstant, RegToSlot, SlotToReg,
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, OperatorInstruction, IsZero, LoadConstant, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, Branch, LoadConstant, RegToSlot, SlotToReg, SlotToReg, Branch,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn,
NilClass] Transfer, Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "else" , get_return.to_string assert_equal "else" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(65) done = main_ticks(67)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -20,16 +20,17 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
IsMinus, LoadConstant, Branch, RegToSlot, SlotToReg, IsMinus, LoadConstant, Branch, RegToSlot, SlotToReg,
SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, OperatorInstruction, IsZero, LoadConstant, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
OperatorInstruction, IsZero, LoadConstant, Branch, RegToSlot, LoadConstant, OperatorInstruction, IsZero, LoadConstant, Branch,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "then" , get_return.to_string assert_equal "then" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(68) done = main_ticks(70)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -20,16 +20,16 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
IsMinus, IsZero, LoadConstant, RegToSlot, SlotToReg, IsMinus, IsZero, LoadConstant, RegToSlot, SlotToReg,
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, OperatorInstruction, IsZero, LoadConstant, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, Branch, LoadConstant, RegToSlot, SlotToReg, SlotToReg, Branch,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn,
NilClass] Transfer, Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "else" , get_return.to_string assert_equal "else" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(65) done = main_ticks(67)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -20,16 +20,17 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
IsMinus, LoadConstant, Branch, RegToSlot, SlotToReg, IsMinus, LoadConstant, Branch, RegToSlot, SlotToReg,
SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, OperatorInstruction, IsZero, LoadConstant, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
OperatorInstruction, IsZero, LoadConstant, Branch, RegToSlot, LoadConstant, OperatorInstruction, IsZero, LoadConstant, Branch,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "then" , get_return.to_string assert_equal "then" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(68) done = main_ticks(70)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -35,10 +35,11 @@ module Risc
SlotToReg, Branch, DynamicJump, SlotToReg, SlotToReg, SlotToReg, Branch, DynamicJump, SlotToReg, SlotToReg,
LoadData, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, LoadData, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg,
RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, Branch, SlotToReg, SlotToReg, FunctionReturn, RegToSlot, Branch, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, SlotToReg, SlotToReg, Branch, FunctionReturn,
Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 1 , get_return.value assert_equal 1 , get_return.value
end end
@ -59,13 +60,13 @@ module Risc
assert_equal DynamicJump , cal.class assert_equal DynamicJump , cal.class
end end
def test_return def test_return
ret = main_ticks(137) ret = main_ticks(140)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Parfait::Integer , link.class assert_equal Fixnum , link.class
end end
def test_sys def test_sys
sys = main_ticks(139) sys = main_ticks(142)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
end end
end end

View File

@ -19,7 +19,7 @@ module Risc
@instruction_events << was @instruction_events << was
end end
def length def length
88 91
end end
def test_state_change def test_state_change
@interpreter.register_event :state_changed , self @interpreter.register_event :state_changed , self
@ -53,13 +53,17 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot,
RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot, RegToSlot, SlotToReg, Branch, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, SlotToReg, Branch, FunctionReturn, Transfer,
Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 12 , get_return.value assert_equal 12 , get_return.value
end end
def test_length
run_all
assert_equal length , @interpreter.clock
end
end end
end end

View File

@ -12,8 +12,8 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot, check_main_chain [LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer,
NilClass] Syscall, NilClass]
assert_equal 5 , get_return.value assert_equal 5 , get_return.value
end end
@ -28,17 +28,17 @@ module Risc
assert_equal 5 , @interpreter.get_register(load_ins.register).value assert_equal 5 , @interpreter.get_register(load_ins.register).value
end end
def test_return def test_return
ret = main_ticks(8) ret = main_ticks(9)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Parfait::Integer , link.class assert_equal Fixnum , link.class
end end
def test_transfer def test_transfer
transfer = main_ticks(9) transfer = main_ticks(10)
assert_equal Transfer , transfer.class assert_equal Transfer , transfer.class
end end
def test_sys def test_sys
sys = main_ticks(10) sys = main_ticks(11)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
end end
end end

View File

@ -20,39 +20,40 @@ module Risc
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg, RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus,
LoadConstant, Branch, RegToSlot, SlotToReg, SlotToReg, LoadConstant, Branch, RegToSlot, SlotToReg, SlotToReg,
Branch, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
LoadConstant, OperatorInstruction, IsZero, Branch, LoadConstant, SlotToReg, LoadConstant, OperatorInstruction, IsZero, Branch,
OperatorInstruction, IsZero, LoadConstant, LoadConstant, SlotToReg, LoadConstant, OperatorInstruction, IsZero, LoadConstant, LoadConstant,
SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, Branch, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant,
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot,
SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, Branch, LoadConstant, LoadConstant, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
RegToSlot, Branch, LoadConstant, SlotToReg, RegToSlot, RegToSlot, Branch, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, LoadConstant,
SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot,
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, LoadConstant,
LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot, OperatorInstruction, IsZero, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg,
Branch, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, NilClass]
SlotToReg, SlotToReg, SlotToReg, RegToSlot, Branch,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, FunctionCall,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
OperatorInstruction, IsMinus, LoadConstant, RegToSlot, SlotToReg,
SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, Branch, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer,
Syscall, NilClass]
assert_kind_of Parfait::Integer , get_return assert_kind_of Parfait::Integer , get_return
assert_equal 1 , get_return.value assert_equal 1 , get_return.value
end end
def test_exit def test_exit
done = main_ticks(181) done = main_ticks(185)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -21,38 +21,39 @@ module Risc
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus,
IsZero, LoadConstant, Branch, RegToSlot, SlotToReg, IsZero, LoadConstant, Branch, RegToSlot, SlotToReg,
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, OperatorInstruction, IsZero, Branch, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
LoadConstant, OperatorInstruction, IsZero, LoadConstant, LoadConstant, Branch, LoadConstant, OperatorInstruction, IsZero, LoadConstant,
LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch,
RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, Branch, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, FunctionCall, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
SlotToReg, RegToSlot, Branch, LoadConstant, LoadConstant,
SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot, RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, Branch, LoadConstant, SlotToReg, SlotToReg, RegToSlot, Branch, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg, RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus,
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, IsZero, LoadConstant, RegToSlot, SlotToReg, Branch,
SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
Branch, LoadConstant, LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, Branch, SlotToReg,
SlotToReg, Branch, RegToSlot, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, Transfer, Syscall, NilClass]
SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot,
Branch, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, OperatorInstruction, IsMinus, IsZero, LoadConstant,
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
IsZero, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass]
assert_kind_of Parfait::Integer , get_return assert_kind_of Parfait::Integer , get_return
assert_equal 0 , get_return.value assert_equal 0 , get_return.value
end end
def test_exit def test_exit
done = main_ticks(183) done = main_ticks(187)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -16,8 +16,8 @@ module Risc
IsZero, LoadConstant, SlotToReg, Branch, RegToSlot, IsZero, LoadConstant, SlotToReg, Branch, RegToSlot,
Branch, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, Branch, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
IsZero, SlotToReg, SlotToReg, RegToSlot, SlotToReg, IsZero, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
Transfer, Syscall, NilClass] FunctionReturn, Transfer, Syscall, NilClass]
assert_kind_of Parfait::FalseClass , get_return assert_kind_of Parfait::FalseClass , get_return
end end
def test_load_false_const def test_load_false_const
@ -54,7 +54,7 @@ module Risc
assert check.label.name.start_with?("merge_label") , check.label.name assert check.label.name.start_with?("merge_label") , check.label.name
end end
def test_exit def test_exit
done = main_ticks(32) done = main_ticks(33)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end