update return address in label
so return jumps go to the right address
This commit is contained in:
@ -10,6 +10,13 @@ module Risc
|
||||
@instruction = DummyInstruction.new(DummyInstruction.new)
|
||||
@position = InstructionListener.init(@instruction , @binary)
|
||||
end
|
||||
def test_label_address
|
||||
label = Label.new("hi" ,"ho" , FakeAddress.new(0))
|
||||
label_pos = Position.new( label , -1 )
|
||||
label_pos.position_listener(InstructionListener.new(@binary))
|
||||
label_pos.set(8)
|
||||
assert_equal 8 , label_pos.object.address.value
|
||||
end
|
||||
def test_init
|
||||
assert InstructionListener.init(@instruction , @binary)
|
||||
end
|
||||
|
@ -52,7 +52,7 @@ module Risc
|
||||
end
|
||||
def test_pc1
|
||||
@interpreter.tick
|
||||
assert_equal 20172 , @interpreter.pc
|
||||
assert_equal 20344 , @interpreter.pc
|
||||
end
|
||||
def test_tick2
|
||||
@interpreter.tick
|
||||
@ -66,22 +66,26 @@ module Risc
|
||||
def test_pc2
|
||||
@interpreter.tick
|
||||
@interpreter.tick
|
||||
assert_equal 20176 , @interpreter.pc
|
||||
assert_equal 20348 , @interpreter.pc
|
||||
end
|
||||
def pest_tick_14_jump
|
||||
def test_tick_14_jump
|
||||
14.times {@interpreter.tick}
|
||||
assert_equal Branch , @interpreter.instruction.class
|
||||
end
|
||||
def pest_tick_14_bin
|
||||
def test_tick_14_bin
|
||||
13.times {@interpreter.tick}
|
||||
binary_pos = binary_position
|
||||
@interpreter.tick #jump has no listener
|
||||
@interpreter.tick
|
||||
assert_equal binary_pos , binary_position , "#{binary_pos.to_s(16)}!=#{binary_position.to_s(16)}"
|
||||
assert binary_pos.at != binary_position.at , "#{binary_pos}!=#{binary_position}"
|
||||
end
|
||||
def binary_position
|
||||
Position.get(Position.get(@interpreter.instruction).binary).at
|
||||
pos = Position.get(@interpreter.instruction)
|
||||
list = pos.event_table[:position_changed].first
|
||||
assert_equal InstructionListener, list.class
|
||||
Position.get(list.binary)
|
||||
end
|
||||
def pest_tick_15 #more than a binary code worth
|
||||
def test_tick_15 #more than a binary code worth
|
||||
15.times {@interpreter.tick}
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user