reducing the label's int for return
placing the raw address in the register to jump to puts the extra instruction at the risc level (not arm), thus changing a lot of (brittle?) tests
This commit is contained in:
@ -20,39 +20,40 @@ module Risc
|
||||
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
|
||||
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus,
|
||||
LoadConstant, Branch, RegToSlot, SlotToReg, SlotToReg,
|
||||
Branch, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
|
||||
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
LoadConstant, OperatorInstruction, IsZero, Branch, LoadConstant,
|
||||
OperatorInstruction, IsZero, LoadConstant, LoadConstant, SlotToReg,
|
||||
Branch, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
|
||||
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsZero, Branch,
|
||||
LoadConstant, OperatorInstruction, IsZero, LoadConstant, LoadConstant,
|
||||
SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
|
||||
RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot,
|
||||
SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
|
||||
SlotToReg, RegToSlot, Branch, LoadConstant, SlotToReg,
|
||||
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
|
||||
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant,
|
||||
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot,
|
||||
SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
|
||||
RegToSlot, Branch, LoadConstant, LoadConstant, SlotToReg,
|
||||
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
|
||||
SlotToReg, SlotToReg, Branch, RegToSlot, SlotToReg,
|
||||
RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
|
||||
RegToSlot, Branch, LoadConstant, SlotToReg, RegToSlot,
|
||||
SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
|
||||
SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg,
|
||||
SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
|
||||
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, Branch,
|
||||
LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
|
||||
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
Branch, RegToSlot, SlotToReg, RegToSlot, SlotToReg,
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, SlotToReg, SlotToReg, RegToSlot, Branch,
|
||||
LoadConstant, SlotToReg, RegToSlot, SlotToReg, FunctionCall,
|
||||
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
|
||||
OperatorInstruction, IsMinus, LoadConstant, RegToSlot, SlotToReg,
|
||||
SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg,
|
||||
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg,
|
||||
SlotToReg, RegToSlot, SlotToReg, Branch, SlotToReg,
|
||||
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer,
|
||||
Syscall, NilClass]
|
||||
SlotToReg, SlotToReg, OperatorInstruction, IsMinus, LoadConstant,
|
||||
RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot,
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, LoadConstant,
|
||||
OperatorInstruction, IsZero, SlotToReg, SlotToReg, RegToSlot,
|
||||
SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
|
||||
NilClass]
|
||||
assert_kind_of Parfait::Integer , get_return
|
||||
assert_equal 1 , get_return.value
|
||||
end
|
||||
def test_exit
|
||||
done = main_ticks(181)
|
||||
done = main_ticks(185)
|
||||
assert_equal Syscall , done.class
|
||||
end
|
||||
end
|
||||
|
@ -21,38 +21,39 @@ module Risc
|
||||
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus,
|
||||
IsZero, LoadConstant, Branch, RegToSlot, SlotToReg,
|
||||
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsZero, Branch,
|
||||
LoadConstant, OperatorInstruction, IsZero, LoadConstant, LoadConstant,
|
||||
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
|
||||
SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
|
||||
Branch, LoadConstant, OperatorInstruction, IsZero, LoadConstant,
|
||||
LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg,
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, Branch,
|
||||
RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
|
||||
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
SlotToReg, SlotToReg, RegToSlot, Branch, LoadConstant,
|
||||
SlotToReg, RegToSlot, SlotToReg, FunctionCall, SlotToReg,
|
||||
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
|
||||
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
|
||||
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
|
||||
SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
|
||||
SlotToReg, RegToSlot, Branch, LoadConstant, LoadConstant,
|
||||
SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
|
||||
RegToSlot, SlotToReg, SlotToReg, Branch, RegToSlot,
|
||||
SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
|
||||
SlotToReg, RegToSlot, Branch, LoadConstant, SlotToReg,
|
||||
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
|
||||
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant,
|
||||
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot,
|
||||
SlotToReg, Branch, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
|
||||
Branch, LoadConstant, LoadConstant, SlotToReg, RegToSlot,
|
||||
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, Branch, RegToSlot, SlotToReg, RegToSlot,
|
||||
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
||||
SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot,
|
||||
Branch, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
|
||||
FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
|
||||
SlotToReg, OperatorInstruction, IsMinus, IsZero, LoadConstant,
|
||||
RegToSlot, SlotToReg, Branch, SlotToReg, RegToSlot,
|
||||
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
|
||||
RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
|
||||
IsZero, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
|
||||
Branch, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
FunctionReturn, Transfer, Syscall, NilClass]
|
||||
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus,
|
||||
IsZero, LoadConstant, RegToSlot, SlotToReg, Branch,
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
|
||||
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg,
|
||||
SlotToReg, RegToSlot, SlotToReg, Branch, SlotToReg,
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn,
|
||||
Transfer, Syscall, NilClass]
|
||||
assert_kind_of Parfait::Integer , get_return
|
||||
assert_equal 0 , get_return.value
|
||||
end
|
||||
def test_exit
|
||||
done = main_ticks(183)
|
||||
done = main_ticks(187)
|
||||
assert_equal Syscall , done.class
|
||||
end
|
||||
end
|
||||
|
@ -16,8 +16,8 @@ module Risc
|
||||
IsZero, LoadConstant, SlotToReg, Branch, RegToSlot,
|
||||
Branch, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
|
||||
IsZero, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
|
||||
Transfer, Syscall, NilClass]
|
||||
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
|
||||
FunctionReturn, Transfer, Syscall, NilClass]
|
||||
assert_kind_of Parfait::FalseClass , get_return
|
||||
end
|
||||
def test_load_false_const
|
||||
@ -54,7 +54,7 @@ module Risc
|
||||
assert check.label.name.start_with?("merge_label") , check.label.name
|
||||
end
|
||||
def test_exit
|
||||
done = main_ticks(32)
|
||||
done = main_ticks(33)
|
||||
assert_equal Syscall , done.class
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user