fix register use in putstring

was off by one, the syscall is write 
and the first arg is file_descriptor
ie 1 == stdout
This commit is contained in:
2020-03-25 18:58:10 +02:00
parent 231ce0f69b
commit 4bae5c418b
6 changed files with 16 additions and 8 deletions

View File

@ -35,9 +35,9 @@ module Risc
def test_pre_sys
done = main_ticks(24)
assert_equal Parfait::Word , @interpreter.get_register(:r0).class
assert_equal "Hello again" , @interpreter.get_register(:r0).to_string
assert_equal 11 , @interpreter.get_register(:r1)
assert_equal Parfait::Word , @interpreter.get_register(@interpreter.std_reg(:syscall_2)).class
assert_equal "Hello again" , @interpreter.get_register(@interpreter.std_reg(:syscall_2)).to_string
assert_equal 11 , @interpreter.get_register(@interpreter.std_reg(:syscall_3))
end
def test_sys

View File

@ -26,5 +26,10 @@ module Risc
int = @builder.allocate_int
assert_allocate
end
def test_compiler
int = @builder.allocate_int
assert int.compiler
assert int.symbol.to_s.start_with?("id_fac")
end
end
end

View File

@ -24,8 +24,8 @@ module SlotMachine
assert_reg_to_slot s + 1 , "id_factory_.next_object" , :message , 5
assert_slot_to_reg s + 2 ,:message , 2 , "message.receiver"
assert_slot_to_reg s + 3 ,"message.receiver" , 1 , "id_factory_.next_object"
assert_transfer s + 4 , :"message.receiver" , :syscall_1
assert_transfer s + 5 , "id_factory_.next_object" , :syscall_2
assert_transfer s + 4 , :"message.receiver" , :syscall_2
assert_transfer s + 5 , "id_factory_.next_object" , :syscall_3
assert_transfer s + 6 , :message , :saved_message
assert_syscall s + 7 , :putstring
assert_transfer s + 8 , :syscall_1 , :restore_integer_return