sort objects by class before positioning
since we don’t have pages yet, but want consistent layout
This commit is contained in:
parent
e94c9ea37b
commit
c55b41afae
@ -27,6 +27,9 @@ module Parfait
|
||||
type_length
|
||||
end
|
||||
|
||||
def to_s
|
||||
"Integer #{@value}"
|
||||
end
|
||||
# compile time method to set the actual value.
|
||||
# this should not really be part of parfait, as ints are immutable at runtime.
|
||||
def set_value(value)
|
||||
|
@ -84,7 +84,8 @@ module Risc
|
||||
# return final position that is stored in code_start
|
||||
def position_objects(at)
|
||||
# want to have the objects first in the executable
|
||||
objects.each do | id , objekt|
|
||||
sorted = objects.values.sort{|left,right| left.class.name <=> right.class.name}
|
||||
sorted.each do | objekt|
|
||||
next if objekt.is_a?( Parfait::BinaryCode) or objekt.is_a?( Risc::Label )
|
||||
before = at
|
||||
Position.set(objekt,at)
|
||||
|
@ -52,7 +52,7 @@ module Risc
|
||||
end
|
||||
def test_pc1
|
||||
@interpreter.tick
|
||||
assert_equal 18392 , @interpreter.pc
|
||||
assert_equal 17952 , @interpreter.pc
|
||||
end
|
||||
def test_tick2
|
||||
@interpreter.tick
|
||||
@ -66,7 +66,7 @@ module Risc
|
||||
def test_pc2
|
||||
@interpreter.tick
|
||||
@interpreter.tick
|
||||
assert_equal 18396 , @interpreter.pc
|
||||
assert_equal 17956 , @interpreter.pc
|
||||
end
|
||||
def test_tick_14_jump
|
||||
14.times {@interpreter.tick}
|
||||
|
@ -29,10 +29,10 @@ module Risc
|
||||
assert_equal 0 , Position.get(@machine.cpu_init).at
|
||||
end
|
||||
def test_cpu_at
|
||||
assert_equal "0x5714" , Position.get(@machine.cpu_init.first).to_s
|
||||
assert_equal "0x555c" , Position.get(@machine.cpu_init.first).to_s
|
||||
end
|
||||
def test_cpu_bin
|
||||
assert_equal "0x570c" , Position.get(Position.get(@machine.cpu_init.first).binary).to_s
|
||||
assert_equal "0x5554" , Position.get(Position.get(@machine.cpu_init.first).binary).to_s
|
||||
end
|
||||
def test_cpu_label
|
||||
assert_equal Position::InstructionPosition , Position.get(@machine.cpu_init.first).class
|
||||
|
Loading…
Reference in New Issue
Block a user