Starting to rework slot instructions that create risc

have to go through all and all macros and all thems tests. What did the wise man say: one step at a time
This commit is contained in:
2020-03-01 16:41:58 +02:00
parent 4643be0ae6
commit 4888b3b6db
14 changed files with 73 additions and 44 deletions

View File

@ -15,10 +15,11 @@ module Risc
end
def test_reg_to_slot_inst
@r0[:next_message] << @r0
inst = @compiler.current
assert_equal RegToSlot , @compiler.current.class
assert_equal @r0 , @compiler.current.register
assert_equal 1 , @compiler.current.index
assert_equal :message , @compiler.current.array.symbol
assert_equal @r0 , inst.register
assert_equal 1 , inst.index
assert_equal :message , inst.array.symbol
end
end
class TestRegisterSlot2 < MiniTest::Test
@ -30,14 +31,14 @@ module Risc
def test_reg_to_slot_reg
reg = @r0[:next_message] << @r0[:next_message]
assert_equal RegisterValue , reg.class
assert_equal :"message.message" , reg.symbol
assert_equal :"message.next_message" , reg.symbol
assert_equal "Message_Type" , reg.type.name
end
def test_reg_to_slot_inst1
@r0[:next_message] << @r0[:next_message]
inst = @compiler.risc_instructions.next
assert_equal SlotToReg , inst.class
assert_equal :"message.message" , inst.register.symbol
assert_equal :"message.next_message" , inst.register.symbol
assert_equal 1 , inst.index
assert_equal :message , inst.array.symbol
end
@ -45,7 +46,28 @@ module Risc
@r0[:next_message] << @r0[:next_message]
inst = @compiler.current
assert_equal RegToSlot , inst.class
assert_equal :"message.message" , inst.register.symbol
assert_equal :"message.next_message" , inst.register.symbol
assert_equal 1 , inst.index
assert_equal :message , inst.array.symbol
end
end
class TestRegisterSlot3 < MiniTest::Test
def setup
Parfait.boot!(Parfait.default_test_options)
@compiler = Risc.test_compiler
@r0 = RegisterValue.new(:message , :Message).set_compiler(@compiler)
end
def test_arr_reg
slot = @r0[:next_message][:type]
assert_equal RegisterSlot , slot.class
assert_equal :"message.next_message" , slot.register.symbol
assert_equal "Message_Type" , slot.register.type.name
end
def test_arr_inst
slot = @r0[:next_message][:type]
inst = @compiler.current
assert_equal SlotToReg , inst.class
assert_equal :"message.next_message" , inst.register.symbol
assert_equal 1 , inst.index
assert_equal :message , inst.array.symbol
end

View File

@ -11,25 +11,25 @@ module SlotMachine
assert_equal 8 , all.length , all_str
end
def test_1_slot
assert_slot_to_reg risc(1) ,:r0 , 9 , :r2
assert_slot_to_reg risc(1) ,:message , 9 , :"message.arg1"
end
def test_2_slot
assert_slot_to_reg risc(2) ,:r0 , 1 , :r3
assert_slot_to_reg risc(2) ,:message , 1 , :"message.next_message"
end
def test_3_reg
assert_reg_to_slot risc(3) , :r2 , :r3 , 2
assert_reg_to_slot risc(3) , :"message.arg1" , :"message.next_message" , 2
end
def test_4_slot
assert_slot_to_reg risc(4) ,:r0 , 2 , :r2
assert_slot_to_reg risc(4) ,:message , 2 , :"message.receiver"
end
def test_5
assert_slot_to_reg risc(5) ,:r2 , 0 , :r2
assert_slot_to_reg risc(5) ,:"message.receiver" , 0 , :"message.receiver.type"
end
def test_6
assert_slot_to_reg risc(6) ,:r0 , 1 , :r3
assert_slot_to_reg risc(6) ,:message , 1 , :"message.next_message"
end
def test_7
assert_reg_to_slot risc(7) , :r2 , :r3 , 9
assert_reg_to_slot risc(7) , :"message.receiver.type" , :"message.next_message" , 9
end
end
end

View File

@ -4,19 +4,20 @@ module SlotMachine
class TestNotSameCheck < SlotMachineInstructionTest
def instruction
target = Slotted.for(:message , [:caller])
NotSameCheck.new(target , target , Label.new("ok" , "target"))
target2 = Slotted.for(:message , [:next_message])
NotSameCheck.new(target , target2 , Label.new("ok" , "target"))
end
def test_len
assert_equal 5 , all.length , all_str
end
def test_1_slot
assert_slot_to_reg risc(1) ,:r0 , 6 , :r2
assert_slot_to_reg risc(1) ,:message , 6 , :"message.caller"
end
def test_2_slot
assert_slot_to_reg risc(2) ,:r0 , 6 , :r4
assert_slot_to_reg risc(2) ,:message , 1 , :"message.next_message"
end
def test_3_op
assert_operator risc(3) , :-, :r2 , :r4
assert_operator risc(3) , :-, :"message.caller" , :"message.next_message"
end
def test_4_zero
assert_zero risc(4) , "target"

View File

@ -18,19 +18,19 @@ module SlotMachine
assert_equal Risc::RegToSlot , @instructions.next.class
end
def test_ins_arr
assert_equal :r0 , @instructions.array.symbol
assert_equal :message , @instructions.array.symbol
end
def test_ins_reg
assert_equal :r2 , @instructions.register.symbol
assert_equal :"message.type" , @instructions.register.symbol
end
def test_ins_index
assert_equal 0 , @instructions.index
end
def test_ins_next_reg
assert_equal :r2 , @instructions.next.register.symbol
assert_equal :"message.type" , @instructions.next.register.symbol
end
def test_ins_next_arr
assert_equal :r0 , @instructions.next.array.symbol
assert_equal :message , @instructions.next.array.symbol
end
def test_ins_next_index
assert_equal 6 , @instructions.next.index

View File

@ -21,28 +21,28 @@ module SlotMachine
assert_equal NilClass , @instructions.next(4).class
end
def test_ins_next_reg
assert_equal :r2 , @instructions.next.register.symbol
assert_equal :"message.caller.type" , @instructions.next.register.symbol
end
def test_ins_next_arr
assert_equal :r2 , @instructions.next.array.symbol
assert_equal :"message.caller" , @instructions.next.array.symbol
end
def test_ins_next_index
assert_equal 0 , @instructions.next.index
end
def test_ins_next_2_reg
assert_equal :r3 , @instructions.next(2).register.symbol
assert_equal :"message.caller" , @instructions.next(2).register.symbol
end
def test_ins_next_2_arr
assert_equal :r0 , @instructions.next(2).array.symbol
assert_equal :"message" , @instructions.next(2).array.symbol
end
def test_ins_next_2_index
assert_equal 6 , @instructions.next(2).index
end
def test_ins_next_3_reg
assert_equal :r2 , @instructions.next(3).register.symbol
assert_equal :"message.caller.type" , @instructions.next(3).register.symbol
end
def test_ins_next_3_arr
assert_equal :r3 , @instructions.next(3).array.symbol
assert_equal :"message.caller" , @instructions.next(3).array.symbol
end
def test_ins_next_3_index
assert_equal 0 , @instructions.next(3).index

View File

@ -23,25 +23,25 @@ module SlotMachine
assert_equal NilClass , @instructions.next(3).class
end
def test_ins_load
assert_equal :r3 , @instructions.next.register.symbol
assert @instructions.next.register.is_object?
assert_equal Parfait::CacheEntry , @instructions.next.constant.class
end
def test_ins_next_reg
assert_equal :r2 , @instructions.register.symbol
assert_equal :"message.type" , @instructions.register.symbol
end
def test_ins_next_arr
assert_equal :r0 , @instructions.array.symbol
assert_equal :message , @instructions.array.symbol
end
def test_ins_next_index
assert_equal 0 , @instructions.index
end
def test_ins_next_2_reg
assert_equal :r2 , @instructions.next(2).register.symbol
assert_equal :"message.type" , @instructions.next(2).register.symbol
end
def test_ins_next_2_arr
assert_equal :r3 , @instructions.next(2).array.symbol
assert @instructions.next(2).array.is_object?
end
def test_ins_next_2_index
assert_equal 1 , @instructions.next(2).index