set label integer to position

This commit is contained in:
Torsten Ruger 2018-05-29 20:30:02 +03:00
parent 8322fca7b3
commit 296617cbaf
2 changed files with 10 additions and 0 deletions

View File

@ -24,6 +24,7 @@ module Risc
end end
def init(at, binary) def init(at, binary)
@binary = binary @binary = binary
instruction.integer.set_value(at) if instruction.is_a?(Label)
return if at == 0 and binary.nil? return if at == 0 and binary.nil?
raise "faux pas" if at < Position.get(binary).at raise "faux pas" if at < Position.get(binary).at
return unless @instruction.next return unless @instruction.next

View File

@ -14,6 +14,15 @@ module Risc
pos = Position.set( @label , 8 , @binary) pos = Position.set( @label , 8 , @binary)
assert_equal InstructionPosition , pos.class assert_equal InstructionPosition , pos.class
end end
def test_label_set_int
Position.set( @label , 8 , @binary)
assert_equal 8 , @label.integer.value
end
def test_label_reset_int
Position.set( @label , 8 , @binary)
Position.set( @label , 18 , @binary)
assert_equal 18 , @label.integer.value
end
def test_ins_propagates def test_ins_propagates
@label.set_next Arm::ArmMachine.b( @label) @label.set_next Arm::ArmMachine.b( @label)
Position.set( @label , 8 , @binary) Position.set( @label , 8 , @binary)