diff --git a/lib/risc/interpreter.rb b/lib/risc/interpreter.rb index 2e27c04d..cbcf7b2b 100644 --- a/lib/risc/interpreter.rb +++ b/lib/risc/interpreter.rb @@ -270,7 +270,7 @@ module Risc else raise "un-implemented syscall #{name}" end - set_register( :syscall_1 , ret_value ) # syscalls return into syscall_1 + set_register( std_reg(:syscall_1) , ret_value ) # syscalls return into syscall_1 true end diff --git a/lib/slot_machine/macro/macro.rb b/lib/slot_machine/macro/macro.rb index 31fa825b..e4655659 100644 --- a/lib/slot_machine/macro/macro.rb +++ b/lib/slot_machine/macro/macro.rb @@ -43,7 +43,7 @@ module SlotMachine # This instance is filled with os return value def self.restore_message(builder) r8 = Risc::RegisterValue.new( :saved_message , :Message).set_compiler(builder.compiler) - tmp = Risc::RegisterValue.new( :integer_tmp , :Integer).set_compiler(builder.compiler) + tmp = Risc::RegisterValue.new( :restore_integer_return , :Integer).set_compiler(builder.compiler) builder.build do tmp << Risc.syscall_reg(1) message << r8 diff --git a/test/risc/interpreter/calling/test_puts.rb b/test/risc/interpreter/calling/test_puts.rb index f29bbcf9..9072e826 100644 --- a/test/risc/interpreter/calling/test_puts.rb +++ b/test/risc/interpreter/calling/test_puts.rb @@ -25,7 +25,7 @@ module Risc SlotToReg, Transfer, Syscall, NilClass,] #55 assert_equal "Hello again" , @interpreter.stdout assert_equal Integer , get_return.class - assert_equal 11 , get_return.to_string #bytes written + assert_equal 11 , get_return #bytes written end def test_call cal = main_ticks(11) @@ -44,12 +44,12 @@ module Risc done = main_ticks(25) assert_equal Syscall , done.class assert_equal "Hello again" , @interpreter.stdout - assert_equal 11 , @interpreter.get_register(:syscall_1) + assert_equal 11 , @interpreter.get_register(@interpreter.std_reg(:syscall_1)) end def test_move_sys_return assert_transfer(26, :r0 ,:r1) - assert_equal 11 , @interpreter.get_register(:integer_tmp) + assert_equal 11 , @interpreter.get_register(@interpreter.std_reg(:syscall_1)) end def test_restore_message assert_transfer(27, :r14 ,:r13) diff --git a/test/slot_machine/macro/test_putstring.rb b/test/slot_machine/macro/test_putstring.rb index 90d3268e..ec447f67 100644 --- a/test/slot_machine/macro/test_putstring.rb +++ b/test/slot_machine/macro/test_putstring.rb @@ -28,10 +28,10 @@ module SlotMachine assert_transfer s + 5 , "id_factory_.next_object" , :syscall_2 assert_transfer s + 6 , :message , :saved_message assert_syscall s + 7 , :putstring - assert_transfer s + 8 , :syscall_1 , :integer_tmp + assert_transfer s + 8 , :syscall_1 , :restore_integer_return assert_transfer s + 9 , :saved_message , :message assert_slot_to_reg s + 10 ,:message , 5 , "message.return_value" - assert_reg_to_slot s + 11 , :integer_tmp , "message.return_value" , 2 + assert_reg_to_slot s + 11 , :restore_integer_return , "message.return_value" , 2 assert_slot_to_reg s + 12 ,:message , 5 , "message.return_value" assert_reg_to_slot s + 13 , "message.return_value" , :message , 5 assert_branch s + 14 , "return_label"