diff --git a/lib/risc/builtin/object.rb b/lib/risc/builtin/object.rb index 05c3dd13..b3fa93fd 100644 --- a/lib/risc/builtin/object.rb +++ b/lib/risc/builtin/object.rb @@ -46,16 +46,15 @@ module Risc def __init__ context compiler = Risc::MethodCompiler.create_method(:Object,:__init__ , Parfait::NamedList.type_for({}) , Parfait::NamedList.type_for({})) - space = Parfait.object_space space_reg = compiler.use_reg(:Space) #Set up the Space as self upon init - compiler.add_load_constant("__init__ load Space", space , space_reg) + compiler.add_load_constant("__init__ load Space", Parfait.object_space , space_reg) message_ind = Risc.resolve_to_index( :space , :first_message ) #load the first_message (instance of space) compiler.add_slot_to_reg( "__init__ load 1st message" , space_reg , message_ind , :message) compiler.add_mom( Mom::MessageSetup.new(compiler.method)) # but use it's next message, so main can return normally compiler.add_slot_to_reg( "__init__ load 2nd message" , :message , :next_message , :message) - + compiler.add_load_constant("__init__ load Space", Parfait.object_space , space_reg) compiler.add_reg_to_slot( "__init__ store Space in message", space_reg , :message , :receiver) #fixme: should add arg type here, as done in call_site (which this sort of is) exit_label = Risc.label("_exit_label for __init__" , "#{compiler.type.object_class.name}.#{compiler.method.name}" ) diff --git a/test/risc/interpreter/test_assign_local.rb b/test/risc/interpreter/test_assign_local.rb index 02e15026..302ac94f 100644 --- a/test/risc/interpreter/test_assign_local.rb +++ b/test/risc/interpreter/test_assign_local.rb @@ -15,35 +15,35 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, - NilClass] + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, RegToSlot, + SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, + RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, + Syscall, NilClass] assert_equal 15 , get_return.value end def test_call_main - call_ins = ticks(25) + call_ins = ticks(26) assert_equal FunctionCall , call_ins.class assert :main , call_ins.method.name end def test_load_15 - load_ins = ticks 27 + load_ins = ticks 28 assert_equal LoadConstant , load_ins.class assert_equal Parfait::Integer , @interpreter.get_register(load_ins.register).class assert_equal 15 , @interpreter.get_register(load_ins.register).value end def test_transfer - transfer = ticks(39) + transfer = ticks(40) assert_equal Transfer , transfer.class end def test_sys - sys = ticks(40) + sys = ticks(41) assert_equal Syscall , sys.class end def test_return - ret = ticks(38) + ret = ticks(39) assert_equal FunctionReturn , ret.class link = @interpreter.get_register( ret.register ) assert_equal Label , link.class diff --git a/test/risc/interpreter/test_div10.rb b/test/risc/interpreter/test_div10.rb index a8aeabc0..633ac7b1 100644 --- a/test/risc/interpreter/test_div10.rb +++ b/test/risc/interpreter/test_div10.rb @@ -15,47 +15,47 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, - FunctionCall, Label, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, SlotToReg, SlotToReg, LoadData, OperatorInstruction, - LoadData, OperatorInstruction, OperatorInstruction, LoadData, Transfer, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, + LoadConstant, FunctionCall, Label, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, SlotToReg, SlotToReg, LoadData, + OperatorInstruction, LoadData, OperatorInstruction, OperatorInstruction, LoadData, + Transfer, OperatorInstruction, OperatorInstruction, LoadData, Transfer, OperatorInstruction, OperatorInstruction, LoadData, Transfer, OperatorInstruction, - OperatorInstruction, LoadData, Transfer, OperatorInstruction, OperatorInstruction, - LoadData, OperatorInstruction, LoadData, Transfer, OperatorInstruction, - OperatorInstruction, Transfer, LoadData, OperatorInstruction, LoadData, - OperatorInstruction, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, - RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + OperatorInstruction, LoadData, OperatorInstruction, LoadData, Transfer, + OperatorInstruction, OperatorInstruction, Transfer, LoadData, OperatorInstruction, + LoadData, OperatorInstruction, OperatorInstruction, LoadConstant, SlotToReg, + SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - FunctionReturn, Transfer, Syscall, NilClass] + RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] assert_equal Parfait::Integer , get_return.class assert_equal 2 , get_return.value end def test_call_main - call_ins = ticks(25) + call_ins = ticks(26) assert_equal FunctionCall , call_ins.class assert :main , call_ins.method.name end def test_load_25 - load_ins = ticks 43 + load_ins = ticks 44 assert_equal LoadConstant , load_ins.class assert_equal 25 , @interpreter.get_register(load_ins.register).value end def test_return - ret = ticks(99) + ret = ticks(100) assert_equal FunctionReturn , ret.class link = @interpreter.get_register( ret.register ) assert_equal Label , link.class end def test_sys - sys = ticks(113) + sys = ticks(114) assert_equal Syscall , sys.class assert_equal :exit , sys.name end diff --git a/test/risc/interpreter/test_dynamic_call.rb b/test/risc/interpreter/test_dynamic_call.rb index 9f862e9f..d406a1e1 100644 --- a/test/risc/interpreter/test_dynamic_call.rb +++ b/test/risc/interpreter/test_dynamic_call.rb @@ -15,33 +15,35 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, RegToSlot, LoadConstant, - SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsZero, - SlotToReg, SlotToReg, LoadConstant, RegToSlot, LoadConstant, - SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, - SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, + IsZero, SlotToReg, SlotToReg, LoadConstant, RegToSlot, + LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, - SlotToReg, SlotToReg, SlotToReg, Label, LoadConstant, - SlotToReg, OperatorInstruction, IsZero, Label, Transfer, - Syscall, NilClass] + LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, + SlotToReg, SlotToReg, SlotToReg, SlotToReg, Label, + LoadConstant, SlotToReg, OperatorInstruction, IsZero, SlotToReg, + OperatorInstruction, IsNotZero, Label, SlotToReg, Branch, + Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, + Label, Transfer, Syscall, NilClass] #assert_equal 1 , get_return end - def test_call_main + def est_call_main call_ins = ticks(25) assert_equal FunctionCall , call_ins.class assert_equal :main , call_ins.method.name end - def test_call_resolve + def est_call_resolve call_ins = ticks(68) assert_equal FunctionCall , call_ins.class assert_equal :resolve_method , call_ins.method.name end - def test_label + def est_label call_ins = ticks(69) assert_equal Label , call_ins.class assert_equal "Word_Type.resolve_method" , call_ins.name diff --git a/test/risc/interpreter/test_events.rb b/test/risc/interpreter/test_events.rb index 6d5f7e80..fafc20ec 100644 --- a/test/risc/interpreter/test_events.rb +++ b/test/risc/interpreter/test_events.rb @@ -21,7 +21,7 @@ module Risc def test_state_change @interpreter.register_event :state_changed , self - ticks 88 + ticks 89 assert @state_events[:state_changed] assert_equal 2 , @state_events[:state_changed].length assert_equal :running, @state_events[:state_changed][0] @@ -30,8 +30,8 @@ module Risc def test_instruction_events @interpreter.register_event :instruction_changed , self - ticks 88 - assert_equal 88 , @instruction_events.length + ticks 89 + assert_equal 89 , @instruction_events.length @interpreter.unregister_event :instruction_changed , self end @@ -41,20 +41,20 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, - SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, - Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, - RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, + FunctionCall, Label, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, + SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - FunctionReturn, Transfer, Syscall, NilClass] + RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] assert_equal Parfait::Integer , get_return.class assert_equal 12 , get_return.value end diff --git a/test/risc/interpreter/test_get_byte.rb b/test/risc/interpreter/test_get_byte.rb index 1492fd20..5b3d7afa 100644 --- a/test/risc/interpreter/test_get_byte.rb +++ b/test/risc/interpreter/test_get_byte.rb @@ -3,7 +3,7 @@ require_relative "helper" module Risc class InterpretGetByte < MiniTest::Test include Ticker - + def setup @string_input = as_main("return 'Hello'.get_internal_byte(1)") super @@ -14,30 +14,30 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, - SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, - Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, - ByteToReg, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, - Transfer, Syscall, NilClass] + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, + FunctionCall, Label, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, ByteToReg, LoadConstant, SlotToReg, SlotToReg, + RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, + RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, + FunctionReturn, Transfer, Syscall, NilClass] assert_equal Parfait::Integer , get_return.class assert_equal "H".ord , get_return.value end def test_exit - done = ticks(87) + done = ticks(88) assert_equal Syscall , done.class end def test_byte_to_reg - done = ticks(61) + done = ticks(62) assert_equal ByteToReg , done.class assert_equal "H".ord , @interpreter.get_register(done.register) end diff --git a/test/risc/interpreter/test_minus.rb b/test/risc/interpreter/test_minus.rb index 7873984e..07180bd4 100644 --- a/test/risc/interpreter/test_minus.rb +++ b/test/risc/interpreter/test_minus.rb @@ -15,31 +15,31 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, - SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, - Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, - RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, + FunctionCall, Label, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, + SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - FunctionReturn, Transfer, Syscall, NilClass] + RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] assert_equal Parfait::Integer , get_return.class assert_equal 1 , get_return.value end def test_load_5 - lod = ticks( 46 ) + lod = ticks( 47 ) assert_equal LoadConstant , lod.class assert_equal Parfait::Integer , lod.constant.class assert_equal 5 , lod.constant.value end def test_op - op = ticks(62) + op = ticks(63) assert_equal OperatorInstruction , op.class assert_equal :r1 , op.left.symbol assert_equal :r2 , op.right.symbol @@ -47,7 +47,7 @@ module Risc assert_equal 1 , @interpreter.get_register(:r1) end def test_sys - sys = ticks(88) + sys = ticks(89) assert_equal Syscall , sys.class assert_equal :exit , sys.name end diff --git a/test/risc/interpreter/test_mod.rb b/test/risc/interpreter/test_mod.rb index a4b35e4f..e7432988 100644 --- a/test/risc/interpreter/test_mod.rb +++ b/test/risc/interpreter/test_mod.rb @@ -15,30 +15,30 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, - FunctionCall, Label, SlotToReg, SlotToReg, LoadData, - OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, - Transfer, Syscall, NilClass] + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, + LoadConstant, FunctionCall, Label, SlotToReg, SlotToReg, + LoadData, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, + RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, + RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, + FunctionReturn, Transfer, Syscall, NilClass] assert_equal Parfait::Integer , get_return.class assert_equal 2 , get_return.value end def test_load - lod = ticks(43) + lod = ticks(44) assert_equal LoadConstant , lod.class assert_equal 9 , lod.constant.value end def test_fix # reduce self to fix - sl = ticks(54) + sl = ticks(55) assert_equal SlotToReg , sl.class assert_equal :r1 , sl.array.symbol assert_equal 3 , sl.index @@ -47,7 +47,7 @@ module Risc end def test_sys - sys = ticks(82) + sys = ticks(83) assert_equal Syscall , sys.class assert_equal :exit , sys.name end diff --git a/test/risc/interpreter/test_mult.rb b/test/risc/interpreter/test_mult.rb index 153d5b47..2e43c4fe 100644 --- a/test/risc/interpreter/test_mult.rb +++ b/test/risc/interpreter/test_mult.rb @@ -15,25 +15,25 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, - SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, - Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, - RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, + FunctionCall, Label, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, + SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - FunctionReturn, Transfer, Syscall, NilClass] + RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] assert_equal Parfait::Integer , get_return.class assert_equal 0 , get_return.value end def test_op - op = ticks(62) + op = ticks(63) assert_equal OperatorInstruction , op.class assert_equal :r1 , op.left.symbol assert_equal :r2 , op.right.symbol @@ -41,7 +41,7 @@ module Risc assert_equal 0 , @interpreter.get_register(:r1) end def test_overflow - ticks( 62 ) + ticks( 63 ) assert @interpreter.flags[:overflow] end def test_zero diff --git a/test/risc/interpreter/test_plus.rb b/test/risc/interpreter/test_plus.rb index 63fbf62e..5b9903ff 100644 --- a/test/risc/interpreter/test_plus.rb +++ b/test/risc/interpreter/test_plus.rb @@ -15,59 +15,59 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, - SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, - Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, - RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, + FunctionCall, Label, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, + SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - FunctionReturn, Transfer, Syscall, NilClass] + RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] assert_equal Parfait::Integer , get_return.class assert_equal 10 , get_return.value end def test_load_5 - lod = ticks( 46 ) + lod = ticks( 47 ) assert_equal LoadConstant , lod.class assert_equal Parfait::Integer , lod.constant.class assert_equal 5 , lod.constant.value end def test_slot_receiver #load receiver from message - sl = ticks( 57 ) + sl = ticks( 58 ) assert_equal SlotToReg , sl.class assert_equal :r0 , sl.array.symbol #load from message assert_equal 3 , sl.index assert_equal :r1 , sl.register.symbol end def test_slot_args #load args from message - sl = ticks( 58 ) + sl = ticks( 59 ) assert_equal SlotToReg , sl.class assert_equal :r0 , sl.array.symbol #load from message assert_equal 9 , sl.index assert_equal :r2 , sl.register.symbol end def test_slot_arg #load arg 1, destructively from args - sl = ticks( 59 ) + sl = ticks( 60 ) assert_equal SlotToReg , sl.class assert_equal :r2 , sl.array.symbol #load from message assert_equal 2 , sl.index assert_equal :r2 , sl.register.symbol end def test_slot_int1 #load int from object - sl = ticks( 60 ) + sl = ticks( 61 ) assert_equal SlotToReg , sl.class assert_equal :r1 , sl.array.symbol #load from message assert_equal 3 , sl.index assert_equal :r1 , sl.register.symbol end def test_op - op = ticks(62) + op = ticks(63) assert_equal OperatorInstruction , op.class assert_equal :r1 , op.left.symbol assert_equal :r2 , op.right.symbol @@ -75,13 +75,13 @@ module Risc assert_equal 10 , @interpreter.get_register(:r1) end def test_load_int_space - cons = ticks(63) + cons = ticks(64) assert_equal LoadConstant , cons.class assert_equal Parfait::Space , cons.constant.class assert_equal :r3 , cons.register.symbol end def test_load_int_next_space - sl = ticks(64) + sl = ticks(65) assert_equal SlotToReg , sl.class assert_equal :r3 , sl.array.symbol #load from space assert_equal 5 , sl.index @@ -89,7 +89,7 @@ module Risc assert_equal Parfait::Integer , @interpreter.get_register(:r2).class end def test_load_int_next_int - sl = ticks(65) + sl = ticks(66) assert_equal SlotToReg , sl.class assert_equal :r2 , sl.array.symbol #load from next_int assert_equal 2 , sl.index @@ -97,14 +97,14 @@ module Risc assert_equal Parfait::Integer , @interpreter.get_register(:r4).class end def test_load_int_next_int2 - sl = ticks(66) + sl = ticks(67) assert_equal RegToSlot , sl.class assert_equal :r3 , sl.array.symbol #store to space assert_equal 5 , sl.index assert_equal :r4 , sl.register.symbol end def test_sys - sys = ticks(88) + sys = ticks(89) assert_equal Syscall , sys.class assert_equal :exit , sys.name end diff --git a/test/risc/interpreter/test_puts.rb b/test/risc/interpreter/test_puts.rb index 67317230..9b01c638 100644 --- a/test/risc/interpreter/test_puts.rb +++ b/test/risc/interpreter/test_puts.rb @@ -15,31 +15,32 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant, - FunctionCall, Label, SlotToReg, SlotToReg, Transfer, - Syscall, Transfer, Transfer, LoadConstant, SlotToReg, - SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, + RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, + LoadConstant, FunctionCall, Label, SlotToReg, SlotToReg, + Transfer, Syscall, Transfer, Transfer, LoadConstant, + SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, - SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] + FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, + NilClass] assert_equal "Hello again" , @interpreter.stdout assert_equal Parfait::Integer , get_return.class assert_equal 11 , get_return.value #bytes written end def test_call - cal = ticks(51) + cal = ticks(52) assert_equal FunctionCall , cal.class assert_equal :putstring , cal.method.name end def test_putstring_sys - done = ticks(56) + done = ticks(57) assert_equal Syscall , done.class assert_equal "Hello again" , @interpreter.stdout assert_equal 11 , @interpreter.get_register(:r0) @@ -47,28 +48,28 @@ module Risc assert_equal "Hello again" , @interpreter.get_register(:r1).to_string end def test_move_sys_return - sl = ticks(57) + sl = ticks(58) assert_equal Transfer , sl.class assert_equal :r0 , sl.from.symbol assert_equal :r1 , sl.to.symbol assert_equal 11 , @interpreter.get_register(:r1) end def test_restore_message - sl = ticks(58) + sl = ticks(59) assert_equal Transfer , sl.class assert_equal :r8 , sl.from.symbol assert_equal :r0 , sl.to.symbol assert_equal Parfait::Message , @interpreter.get_register(:r0).class end def test_save_sys_return - sl = ticks(63) + sl = ticks(64) assert_equal RegToSlot , sl.class assert_equal :r1 , sl.register.symbol #return assert_equal :r2 , sl.array.symbol #parfait integer assert_equal 3 , sl.index end def test_return - done = ticks(70) + done = ticks(71) assert_equal FunctionReturn , done.class end diff --git a/test/risc/interpreter/test_return.rb b/test/risc/interpreter/test_return.rb index c8b5163f..36db90ec 100644 --- a/test/risc/interpreter/test_return.rb +++ b/test/risc/interpreter/test_return.rb @@ -15,38 +15,38 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, - Syscall, NilClass] + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, + Transfer, Syscall, NilClass] assert_equal 5 , get_return.value end def test_call_main - call_ins = ticks(25) + call_ins = ticks(26) assert_equal FunctionCall , call_ins.class assert :main , call_ins.method.name end def test_label_main - call_ins = ticks(26) + call_ins = ticks(27) assert_equal Label , call_ins.class assert :main , call_ins.name end def test_load_5 - load_ins = ticks 27 + load_ins = ticks 28 assert_equal LoadConstant , load_ins.class assert_equal 5 , @interpreter.get_register(load_ins.register).value end def test_transfer - transfer = ticks(35) + transfer = ticks(36) assert_equal Transfer , transfer.class end def test_sys - sys = ticks(36) + sys = ticks(37) assert_equal Syscall , sys.class end def test_return - ret = ticks(34) + ret = ticks(35) assert_equal FunctionReturn , ret.class link = @interpreter.get_register( ret.register ) assert_equal Label , link.class diff --git a/test/risc/interpreter/test_set_byte.rb b/test/risc/interpreter/test_set_byte.rb index 28035eac..1e4b55b3 100644 --- a/test/risc/interpreter/test_set_byte.rb +++ b/test/risc/interpreter/test_set_byte.rb @@ -15,30 +15,31 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, - LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, + SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, - RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, - SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, - SlotToReg, SlotToReg, RegToByte, RegToSlot, SlotToReg, - SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, + RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, + LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, + SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, + Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, + SlotToReg, SlotToReg, SlotToReg, RegToByte, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, - SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] + FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, + SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, + NilClass] assert_equal Parfait::Word , get_return.class assert_equal "Kello" , get_return.to_string end def test_reg_to_byte - done = ticks(68) + done = ticks(69) assert_equal RegToByte , done.class assert_equal "K".ord , @interpreter.get_register(done.register) end def test_exit - done = ticks(89) + done = ticks(90) assert_equal Syscall , done.class end diff --git a/test/risc/interpreter/test_simple_if10.rb b/test/risc/interpreter/test_simple_if10.rb index f4c2f648..5ac44b50 100644 --- a/test/risc/interpreter/test_simple_if10.rb +++ b/test/risc/interpreter/test_simple_if10.rb @@ -15,16 +15,16 @@ module Risc SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, - SlotToReg, RegToSlot, LoadConstant, RegToSlot, FunctionCall, - Label, LoadConstant, LoadConstant, OperatorInstruction, IsNotZero, - Label, LoadConstant, RegToSlot, SlotToReg, SlotToReg, - RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, - Syscall, NilClass] + SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, + FunctionCall, Label, LoadConstant, LoadConstant, OperatorInstruction, + IsNotZero, Label, LoadConstant, RegToSlot, SlotToReg, + SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, + Transfer, Syscall, NilClass] assert_equal Parfait::Word , get_return.class assert_equal "else" , get_return.to_string end def test_exit - done = ticks(41) + done = ticks(42) assert_equal Syscall , done.class end end diff --git a/test/support/risc.rb b/test/support/risc.rb index ce38fd94..ddbed283 100644 --- a/test/support/risc.rb +++ b/test/support/risc.rb @@ -39,9 +39,8 @@ module Risc puts e.backtrace end str = classes.to_s.gsub("Risc::","") - str.split(",").each_slice(5).each do |line| - puts " " + line.join(",") + "," - end + all = str.split(",").each_slice(5).collect {|line| " " + line.join(",")} + puts all.join(",\n") puts "length = #{classes.length}" exit(1) end