fix method_missing register

logic is still wrong, even it is slightly less (at least loading the method name)
This commit is contained in:
Torsten 2020-03-10 17:36:53 +02:00
parent ede103e73d
commit 8867d60c13
2 changed files with 9 additions and 9 deletions

View File

@ -11,7 +11,7 @@ module SlotMachine
def to_risc(compiler) def to_risc(compiler)
builder = compiler.builder(compiler.source_name) builder = compiler.builder(compiler.source_name)
from = Risc::RegisterValue.new(@name , :Word) from = compiler.load_object(Parfait.new_word(@name))
to = Risc::RegisterValue.new(:r1 , :Word) to = Risc::RegisterValue.new(:r1 , :Word)
builder.add_code Risc::Transfer.new(self , from , to) builder.add_code Risc::Transfer.new(self , from , to)
builder.add_code Risc::Syscall.new(self, :died ) builder.add_code Risc::Syscall.new(self, :died )

View File

@ -17,16 +17,16 @@ module SlotMachine
assert_equal 15 , @method.to_risc.risc_instructions.length assert_equal 15 , @method.to_risc.risc_instructions.length
end end
def test_all def test_all
assert_transfer risc(1) , :r1 , :r1 assert_load 1 , Parfait::Word , "id_word_"
assert_equal Risc::Syscall, risc(2).class assert_transfer 2 , "id_word_" , :r1
assert_slot_to_reg risc(3),:r0 , 5 , :r2 assert_syscall 3 , :died
assert_slot_to_reg risc(3),:r0 , 5 , :r2 assert_slot_to_reg 4 , :message , 5 , "message.return_value"
assert_reg_to_slot risc(4) , :r2 , :r0 , 5 assert_reg_to_slot 5 , "message.return_value" , :message , 5
assert_branch risc(5) , "return_label" assert_branch 6 , "return_label"
assert_label risc(6) , "return_label" assert_label 7 , "return_label"
end end
def test_return def test_return
assert_return(6) assert_return(7)
end end
end end
end end