continue to rewrite message_setup
message come from space already. next types
This commit is contained in:
@ -8,9 +8,10 @@ module Risc
|
||||
def setup
|
||||
super
|
||||
@input = "5.mod4"
|
||||
@expect = [LoadConstant, LoadConstant, SlotToReg, SlotToReg, LoadConstant,
|
||||
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
||||
SlotToReg, LoadConstant, FunctionCall, Label]
|
||||
@expect = [LoadConstant, LoadConstant, SlotToReg, SlotToReg, RegToSlot,
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant,
|
||||
SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall,
|
||||
Label]
|
||||
@produced = produce_body
|
||||
end
|
||||
|
||||
@ -34,6 +35,14 @@ module Risc
|
||||
sl = @produced.next( 3 )
|
||||
assert_slot_to_reg( sl , :r2 , 2 , :r4 )
|
||||
end
|
||||
def test_store_next_message
|
||||
sl = @produced.next( 4 )
|
||||
assert_reg_to_slot( sl , :r4 , :r3 , 4 )
|
||||
end
|
||||
def test_store_current_message
|
||||
sl = @produced.next( 5 )
|
||||
assert_reg_to_slot( sl , :r2 , :r0 , 2 )
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
@ -2,14 +2,20 @@ module Risc
|
||||
module Assertions
|
||||
def assert_slot_to_reg( slot , array = nil, index = nil , register = nil)
|
||||
assert_equal SlotToReg , slot.class
|
||||
assert_equal( array , slot.array.symbol) if array
|
||||
assert_equal( index , slot.index) if index
|
||||
assert_equal( register , slot.register.symbol) if register
|
||||
assert_equal( array , slot.array.symbol , "wrong source register") if array
|
||||
assert_equal( index , slot.index, "wrong source index") if index
|
||||
assert_equal( register , slot.register.symbol, "wrong destination") if register
|
||||
end
|
||||
def assert_reg_to_slot( slot , register = nil, array = nil, index = nil )
|
||||
assert_equal RegToSlot , slot.class
|
||||
assert_equal( register , slot.register.symbol, "wrong source register") if register
|
||||
assert_equal( array , slot.array.symbol, "wrong destination register") if array
|
||||
assert_equal( index , slot.index, "wrong destination index") if index
|
||||
end
|
||||
def assert_load(load , clazz = nil , register = nil)
|
||||
assert_equal LoadConstant , load.class
|
||||
assert_equal( clazz , load.constant.class) if clazz
|
||||
assert_equal( register , load.register.symbol) if register
|
||||
assert_equal( register , load.register.symbol, "wrong destination register") if register
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user