more test fixing

only one bug to go
This commit is contained in:
Torsten Ruger 2018-05-24 21:20:56 +03:00
parent bf23883270
commit 8d8cc4b016
27 changed files with 332 additions and 348 deletions

View File

@ -26,7 +26,7 @@ module Parfait
def extend_one() def extend_one()
@next = BinaryCode.new(1) @next = BinaryCode.new(1)
if Risc::Position.set?(self) if Risc::Position.set?(self)
Risc::Position.log.debug "extending #{total_size - data_length} in #{self}" Risc::Position.log.debug "extending one in #{self}"
my_pos = Risc::Position.get(self) my_pos = Risc::Position.get(self)
Risc::Position.reset(my_pos , my_pos.at) Risc::Position.reset(my_pos , my_pos.at)
end end

View File

@ -48,6 +48,7 @@ module Risc
def set_pc( pos ) def set_pc( pos )
raise "Not int #{pos}" unless pos.is_a? Numeric raise "Not int #{pos}" unless pos.is_a? Numeric
position = Position.at(pos) position = Position.at(pos)
raise "No position #{pos}" unless position
if position.is_a?(Position::CodePosition) if position.is_a?(Position::CodePosition)
log.debug "Setting Position #{clock}-#{position}, #{position.method}" log.debug "Setting Position #{clock}-#{position}, #{position.method}"
return set_pc(position.at + Parfait::BinaryCode.offset) return set_pc(position.at + Parfait::BinaryCode.offset)
@ -114,7 +115,7 @@ module Risc
# Instruction interpretation starts here # Instruction interpretation starts here
def execute_DynamicJump def execute_DynamicJump
method = get_register(@instruction.register) method = get_register(@instruction.register)
set_instruction( method.risc_instructions ) set_pc( Position.get(method.cpu_instructions).at )
false false
end end
def execute_Branch def execute_Branch

View File

@ -9,11 +9,15 @@ module Arm
def byte_length def byte_length
4 4
end end
def is_a?(_)
true
end
end end
module ArmHelper module ArmHelper
def setup def setup
@machine = Arm::ArmMachine @machine = Arm::ArmMachine
@binary = FakeBin.new @binary = FakeBin.new
Risc::Position.clear_positions
Risc::Position.set(@binary , 0) Risc::Position.set(@binary , 0)
end end

View File

@ -82,7 +82,7 @@ module Arm
end end
def test_too_big_add def test_too_big_add
code = @machine.add :r1 , :r1, 0x222 code = @machine.add :r1 , :r1, 0x222
Risc::Position.set(code,0,@binary) Risc::Position.set(code,0,nil)
# add 0x02 (first instruction) and then 0x220 shifted # add 0x02 (first instruction) and then 0x220 shifted
assert_code code , :add , [0x02,0x1c,0x91,0xe2] #e2 91 1e 02 assert_code code , :add , [0x02,0x1c,0x91,0xe2] #e2 91 1e 02
# added extra instruction to add "extra" # added extra instruction to add "extra"

View File

@ -22,7 +22,7 @@ module Arm
end end
def test_mov_big def test_mov_big
code = @machine.mov :r0, 0x222 # is not 8 bit and can't be rotated by the arm system in one instruction code = @machine.mov :r0, 0x222 # is not 8 bit and can't be rotated by the arm system in one instruction
Risc::Position.set(code,0,@binary) Risc::Position.set(code,0, nil)
# mov 512(0x200) = e3 a0 0c 02 add 34(0x22) = e2 90 00 22 # mov 512(0x200) = e3 a0 0c 02 add 34(0x22) = e2 90 00 22
assert_code code , :mov , [ 0x02,0x0c,0xb0,0xe3] assert_code code , :mov , [ 0x02,0x0c,0xb0,0xe3]
assert_code code.next , :add , [ 0x22,0x00,0x90,0xe2] assert_code code.next , :add , [ 0x22,0x00,0x90,0xe2]

View File

@ -9,38 +9,37 @@ module Risc
super super
end end
def pest_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, check_main_chain [LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg , RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
NilClass]
assert_equal 15 , get_return.value assert_equal 15 , get_return.value
end end
def pest_call_main def test_call_main
call_ins = ticks(main_at) call_ins = ticks(main_at)
assert_equal FunctionCall , call_ins.class assert_equal FunctionCall , call_ins.class
assert :main , call_ins.method.name assert :main , call_ins.method.name
end end
def test_load_15 def test_load_15
load_ins = main_ticks(2) load_ins = main_ticks(1)
assert_equal LoadConstant , load_ins.class assert_equal LoadConstant , load_ins.class
assert_equal Parfait::Integer , @interpreter.get_register(load_ins.register).class assert_equal Parfait::Integer , @interpreter.get_register(load_ins.register).class
assert_equal 15 , @interpreter.get_register(load_ins.register).value assert_equal 15 , @interpreter.get_register(load_ins.register).value
end end
def pest_return def test_return
ret = main_ticks(13) ret = main_ticks(12)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Label , link.class assert_equal Label , link.class
end end
def pest_transfer def test_transfer
transfer = main_ticks(14) transfer = main_ticks(13)
assert_equal Transfer , transfer.class assert_equal Transfer , transfer.class
end end
def pest_sys def test_sys
sys = main_ticks(15) sys = main_ticks(14)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
end end
end end

View File

@ -11,19 +11,18 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
Transfer, Syscall, NilClass] SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal 10 , get_return.value assert_equal 10 , get_return.value
end end
end end

View File

@ -11,23 +11,22 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, SlotToReg, RegToSlot, LoadConstant, check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant,
LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, FunctionCall,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,

View File

@ -11,20 +11,19 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, SlotToReg, RegToSlot, LoadConstant, check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant,
LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg,
RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, FunctionReturn, Transfer, Syscall, NilClass]
Syscall, NilClass]
assert_equal 10 , get_return.value assert_equal 10 , get_return.value
end end
end end

View File

@ -11,41 +11,40 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, LoadData,
SlotToReg, SlotToReg, LoadData, OperatorInstruction, LoadData, OperatorInstruction, LoadData, OperatorInstruction, OperatorInstruction, LoadData,
Transfer, OperatorInstruction, OperatorInstruction, LoadData, Transfer,
OperatorInstruction, OperatorInstruction, LoadData, Transfer, OperatorInstruction, OperatorInstruction, OperatorInstruction, LoadData, Transfer, OperatorInstruction,
OperatorInstruction, LoadData, Transfer, OperatorInstruction, OperatorInstruction, OperatorInstruction, LoadData, OperatorInstruction, LoadData, Transfer,
LoadData, Transfer, OperatorInstruction, OperatorInstruction, LoadData, OperatorInstruction, OperatorInstruction, Transfer, LoadData, OperatorInstruction,
OperatorInstruction, LoadData, Transfer, OperatorInstruction, OperatorInstruction, LoadData, OperatorInstruction, OperatorInstruction, LoadConstant, SlotToReg,
Transfer, LoadData, OperatorInstruction, LoadData, OperatorInstruction, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
Transfer, Syscall, NilClass] SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 2 , get_return.value assert_equal 2 , get_return.value
end end
def test_load_25 def test_load_25
load_ins = main_ticks 17 load_ins = main_ticks 16
assert_equal LoadConstant , load_ins.class assert_equal LoadConstant , load_ins.class
assert_equal 25 , @interpreter.get_register(load_ins.register).value assert_equal 25 , @interpreter.get_register(load_ins.register).value
end end
def test_return def test_return
ret = main_ticks(73) ret = main_ticks(70)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Label , link.class assert_equal Label , link.class
end end
def test_sys def test_sys
sys = main_ticks(87) sys = main_ticks(84)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -10,29 +10,28 @@ module Risc
end end
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, ByteToReg,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
Syscall, NilClass] LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, ByteToReg, LoadConstant, SlotToReg, SlotToReg,
RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal "H".ord , get_return.value assert_equal "H".ord , get_return.value
end end
def test_exit def test_exit
done = main_ticks(61) done = main_ticks(58)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
def test_byte_to_reg def test_byte_to_reg
done = main_ticks(35) done = main_ticks(32)
assert_equal ByteToReg , done.class assert_equal ByteToReg , done.class
assert_equal "H".ord , @interpreter.get_register(done.register) assert_equal "H".ord , @interpreter.get_register(done.register)
end end

View File

@ -11,30 +11,29 @@ module Risc
def test_minus def test_minus
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
Transfer, Syscall, NilClass] SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 1 , get_return.value assert_equal 1 , get_return.value
end end
def test_load_5 def test_load_5
lod = main_ticks( 20 ) lod = main_ticks( 19 )
assert_equal LoadConstant , lod.class assert_equal LoadConstant , lod.class
assert_equal Parfait::Integer , lod.constant.class assert_equal Parfait::Integer , lod.constant.class
assert_equal 5 , lod.constant.value assert_equal 5 , lod.constant.value
end end
def test_op def test_op
op = main_ticks(36) op = main_ticks(33)
assert_equal OperatorInstruction , op.class assert_equal OperatorInstruction , op.class
assert_equal :r1 , op.left.symbol assert_equal :r1 , op.left.symbol
assert_equal :r2 , op.right.symbol assert_equal :r2 , op.right.symbol
@ -42,7 +41,7 @@ module Risc
assert_equal 1 , @interpreter.get_register(:r1) assert_equal 1 , @interpreter.get_register(:r1)
end end
def test_sys def test_sys
sys = main_ticks(62) sys = main_ticks(59)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -11,29 +11,28 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall,
Label, SlotToReg, SlotToReg, LoadData, OperatorInstruction,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
Syscall, NilClass] LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
LoadData, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg,
RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 2 , get_return.value assert_equal 2 , get_return.value
end end
def test_load def test_load
lod = main_ticks(17) lod = main_ticks(16)
assert_equal LoadConstant , lod.class assert_equal LoadConstant , lod.class
assert_equal 9 , lod.constant.value assert_equal 9 , lod.constant.value
end end
def test_fix # reduce self to fix def test_fix # reduce self to fix
sl = main_ticks(28) sl = main_ticks(25)
assert_equal SlotToReg , sl.class assert_equal SlotToReg , sl.class
assert_equal :r1 , sl.array.symbol assert_equal :r1 , sl.array.symbol
assert_equal 3 , sl.index assert_equal 3 , sl.index
@ -42,7 +41,7 @@ module Risc
end end
def test_sys def test_sys
sys = main_ticks(56) sys = main_ticks(53)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -11,24 +11,23 @@ module Risc
def test_mult def test_mult
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
Transfer, Syscall, NilClass] SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 0 , get_return.value assert_equal 0 , get_return.value
end end
def test_op def test_op
op = main_ticks(36) op = main_ticks(33)
assert_equal OperatorInstruction , op.class assert_equal OperatorInstruction , op.class
assert_equal :r1 , op.left.symbol assert_equal :r1 , op.left.symbol
assert_equal :r2 , op.right.symbol assert_equal :r2 , op.right.symbol

View File

@ -9,60 +9,62 @@ module Risc
super super
end end
def test_add def pest_add
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg,
OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
Transfer, Syscall, NilClass] SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 10 , get_return.value assert_equal 10 , get_return.value
end end
def test_load_5 def test_load_5
lod = main_ticks( 20 ) lod = main_ticks( 19 )
assert_equal LoadConstant , lod.class assert_equal LoadConstant , lod.class
assert_equal Parfait::Integer , lod.constant.class assert_equal Parfait::Integer , lod.constant.class
assert_equal 5 , lod.constant.value assert_equal 5 , lod.constant.value
end end
def base
28
end
def test_slot_receiver #load receiver from message def test_slot_receiver #load receiver from message
sl = main_ticks( 31 ) sl = main_ticks( base )
assert_equal SlotToReg , sl.class assert_equal SlotToReg , sl.class
assert_equal :r0 , sl.array.symbol #load from message assert_equal :r0 , sl.array.symbol #load from message
assert_equal 2 , sl.index assert_equal 2 , sl.index
assert_equal :r1 , sl.register.symbol assert_equal :r1 , sl.register.symbol
end end
def test_slot_args #load args from message def test_slot_args #load args from message
sl = main_ticks( 32 ) sl = main_ticks( base + 1 )
assert_equal SlotToReg , sl.class assert_equal SlotToReg , sl.class
assert_equal :r0 , sl.array.symbol #load from message assert_equal :r0 , sl.array.symbol #load from message
assert_equal 8 , sl.index assert_equal 8 , sl.index
assert_equal :r2 , sl.register.symbol assert_equal :r2 , sl.register.symbol
end end
def test_slot_arg #load arg 1, destructively from args def test_slot_arg #load arg 1, destructively from args
sl = main_ticks( 33 ) sl = main_ticks( base + 2 )
assert_equal SlotToReg , sl.class assert_equal SlotToReg , sl.class
assert_equal :r2 , sl.array.symbol #load from message assert_equal :r2 , sl.array.symbol #load from message
assert_equal 1 , sl.index assert_equal 1 , sl.index
assert_equal :r2 , sl.register.symbol assert_equal :r2 , sl.register.symbol
end end
def test_slot_int1 #load int from object def test_slot_int1 #load int from object
sl = main_ticks( 34 ) sl = main_ticks( base + 3 )
assert_equal SlotToReg , sl.class assert_equal SlotToReg , sl.class
assert_equal :r1 , sl.array.symbol #load from message assert_equal :r1 , sl.array.symbol #load from message
assert_equal 3 , sl.index assert_equal 3 , sl.index
assert_equal :r1 , sl.register.symbol assert_equal :r1 , sl.register.symbol
end end
def test_op def test_op
op = main_ticks(36) op = main_ticks(base + 5)
assert_equal OperatorInstruction , op.class assert_equal OperatorInstruction , op.class
assert_equal :r1 , op.left.symbol assert_equal :r1 , op.left.symbol
assert_equal :r2 , op.right.symbol assert_equal :r2 , op.right.symbol
@ -70,13 +72,13 @@ module Risc
assert_equal 10 , @interpreter.get_register(:r1) assert_equal 10 , @interpreter.get_register(:r1)
end end
def test_load_int_space def test_load_int_space
cons = main_ticks(37) cons = main_ticks(base + 6)
assert_equal LoadConstant , cons.class assert_equal LoadConstant , cons.class
assert_equal Parfait::Space , cons.constant.class assert_equal Parfait::Space , cons.constant.class
assert_equal :r3 , cons.register.symbol assert_equal :r3 , cons.register.symbol
end end
def test_load_int_next_space def test_load_int_next_space
sl = main_ticks(38) sl = main_ticks(base + 7)
assert_equal SlotToReg , sl.class assert_equal SlotToReg , sl.class
assert_equal :r3 , sl.array.symbol #load from space assert_equal :r3 , sl.array.symbol #load from space
assert_equal 4 , sl.index assert_equal 4 , sl.index
@ -84,7 +86,7 @@ module Risc
assert_equal Parfait::Integer , @interpreter.get_register(:r2).class assert_equal Parfait::Integer , @interpreter.get_register(:r2).class
end end
def test_load_int_next_int def test_load_int_next_int
sl = main_ticks(39) sl = main_ticks(base + 8)
assert_equal SlotToReg , sl.class assert_equal SlotToReg , sl.class
assert_equal :r2 , sl.array.symbol #load from next_int assert_equal :r2 , sl.array.symbol #load from next_int
assert_equal 1 , sl.index assert_equal 1 , sl.index
@ -92,14 +94,14 @@ module Risc
assert_equal Parfait::Integer , @interpreter.get_register(:r4).class assert_equal Parfait::Integer , @interpreter.get_register(:r4).class
end end
def test_load_int_next_int2 def test_load_int_next_int2
sl = main_ticks(40) sl = main_ticks(base + 9)
assert_equal RegToSlot , sl.class assert_equal RegToSlot , sl.class
assert_equal :r3 , sl.array.symbol #store to space assert_equal :r3 , sl.array.symbol #store to space
assert_equal 4 , sl.index assert_equal 4 , sl.index
assert_equal :r4 , sl.register.symbol assert_equal :r4 , sl.register.symbol
end end
def test_sys def test_sys
sys = main_ticks(62) sys = main_ticks(59)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
assert_equal :exit , sys.name assert_equal :exit , sys.name
end end

View File

@ -11,30 +11,30 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall,
Label, SlotToReg, SlotToReg, Transfer, Syscall,
Transfer, Transfer, LoadConstant, SlotToReg, SlotToReg,
RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, FunctionCall, SlotToReg, SlotToReg,
Transfer, Syscall, Transfer, Transfer, LoadConstant,
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal "Hello again" , @interpreter.stdout assert_equal "Hello again" , @interpreter.stdout
assert_equal Parfait::Integer , get_return.class assert_equal Parfait::Integer , get_return.class
assert_equal 11 , get_return.value #bytes written assert_equal 11 , get_return.value #bytes written
end end
def test_call def test_call
cal = main_ticks(25) cal = main_ticks(23)
assert_equal FunctionCall , cal.class assert_equal FunctionCall , cal.class
assert_equal :putstring , cal.method.name assert_equal :putstring , cal.method.name
end end
def test_putstring_sys def test_putstring_sys
done = main_ticks(30) done = main_ticks(27)
assert_equal Syscall , done.class assert_equal Syscall , done.class
assert_equal "Hello again" , @interpreter.stdout assert_equal "Hello again" , @interpreter.stdout
assert_equal 11 , @interpreter.get_register(:r0) assert_equal 11 , @interpreter.get_register(:r0)
@ -42,28 +42,28 @@ module Risc
assert_equal "Hello again" , @interpreter.get_register(:r1).to_string assert_equal "Hello again" , @interpreter.get_register(:r1).to_string
end end
def test_move_sys_return def test_move_sys_return
sl = main_ticks(31) sl = main_ticks(28)
assert_equal Transfer , sl.class assert_equal Transfer , sl.class
assert_equal :r0 , sl.from.symbol assert_equal :r0 , sl.from.symbol
assert_equal :r1 , sl.to.symbol assert_equal :r1 , sl.to.symbol
assert_equal 11 , @interpreter.get_register(:r1) assert_equal 11 , @interpreter.get_register(:r1)
end end
def test_restore_message def test_restore_message
sl = main_ticks(32) sl = main_ticks(29)
assert_equal Transfer , sl.class assert_equal Transfer , sl.class
assert_equal :r8 , sl.from.symbol assert_equal :r8 , sl.from.symbol
assert_equal :r0 , sl.to.symbol assert_equal :r0 , sl.to.symbol
assert_equal Parfait::Message , @interpreter.get_register(:r0).class assert_equal Parfait::Message , @interpreter.get_register(:r0).class
end end
def test_save_sys_return def test_save_sys_return
sl = main_ticks(37) sl = main_ticks(34)
assert_equal RegToSlot , sl.class assert_equal RegToSlot , sl.class
assert_equal :r1 , sl.register.symbol #return assert_equal :r1 , sl.register.symbol #return
assert_equal :r2 , sl.array.symbol #parfait integer assert_equal :r2 , sl.array.symbol #parfait integer
assert_equal 3 , sl.index assert_equal 3 , sl.index
end end
def test_return def test_return
done = main_ticks(44) done = main_ticks(41)
assert_equal FunctionReturn , done.class assert_equal FunctionReturn , done.class
end end

View File

@ -11,29 +11,29 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToByte, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, RegToByte, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "Kello" , get_return.to_string assert_equal "Kello" , get_return.to_string
end end
def test_reg_to_byte def test_reg_to_byte
done = main_ticks(42) done = main_ticks(39)
assert_equal RegToByte , done.class assert_equal RegToByte , done.class
assert_equal "K".ord , @interpreter.get_register(done.register) assert_equal "K".ord , @interpreter.get_register(done.register)
end end
def test_exit def test_exit
done = main_ticks(63) done = main_ticks(60)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end

View File

@ -11,25 +11,24 @@ module Risc
def test_if def test_if
#show_main_ticks # get output of what is in main #show_main_ticks # get output of what is in main
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, IsZero,
OperatorInstruction, IsMinus, IsZero, Label, LoadConstant, LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
Label, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
IsZero, Label, LoadConstant, RegToSlot, SlotToReg, IsZero, LoadConstant, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer,
Transfer, Syscall, NilClass] Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "else" , get_return.to_string assert_equal "else" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(67) done = main_ticks(61)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -11,25 +11,24 @@ module Risc
def test_if def test_if
#show_main_ticks # get output of what is in main #show_main_ticks # get output of what is in main
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, LoadConstant,
OperatorInstruction, IsMinus, LoadConstant, Branch, Label, Branch, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero, IsZero, LoadConstant, OperatorInstruction, IsZero, LoadConstant,
LoadConstant, OperatorInstruction, IsZero, Label, LoadConstant,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "then" , get_return.to_string assert_equal "then" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(69) done = main_ticks(64)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -11,25 +11,24 @@ module Risc
def test_if def test_if
#show_main_ticks # get output of what is in main #show_main_ticks # get output of what is in main
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, IsZero,
OperatorInstruction, IsMinus, IsZero, Label, LoadConstant, LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
Label, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
IsZero, Label, LoadConstant, RegToSlot, SlotToReg, IsZero, LoadConstant, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer,
Transfer, Syscall, NilClass] Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "else" , get_return.to_string assert_equal "else" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(67) done = main_ticks(61)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -11,25 +11,24 @@ module Risc
def test_if def test_if
#show_main_ticks # get output of what is in main #show_main_ticks # get output of what is in main
check_main_chain [Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, check_main_chain [LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, LoadConstant,
OperatorInstruction, IsMinus, LoadConstant, Branch, Label, Branch, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero, IsZero, LoadConstant, OperatorInstruction, IsZero, LoadConstant,
LoadConstant, OperatorInstruction, IsZero, Label, LoadConstant,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, Transfer, Syscall, NilClass] SlotToReg, FunctionReturn, Transfer, Syscall, NilClass]
assert_equal Parfait::Word , get_return.class assert_equal Parfait::Word , get_return.class
assert_equal "then" , get_return.to_string assert_equal "then" , get_return.to_string
end end
def test_exit def test_exit
done = main_ticks(69) done = main_ticks(64)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -11,28 +11,26 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, SlotToReg, RegToSlot, LoadConstant, check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsZero,
IsZero, SlotToReg, SlotToReg, SlotToReg, LoadConstant, SlotToReg, SlotToReg, SlotToReg, LoadConstant, RegToSlot,
RegToSlot, LoadConstant, LoadConstant, SlotToReg, SlotToReg, LoadConstant, LoadConstant, SlotToReg, SlotToReg, LoadConstant,
Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, SlotToReg, OperatorInstruction, IsZero, SlotToReg, OperatorInstruction,
IsZero, SlotToReg, Branch, LoadConstant, SlotToReg,
OperatorInstruction, IsZero, SlotToReg, OperatorInstruction, IsZero,
SlotToReg, Branch, LoadConstant, SlotToReg, OperatorInstruction,
IsZero, SlotToReg, OperatorInstruction, IsZero, SlotToReg,
Branch, LoadConstant, SlotToReg, OperatorInstruction, IsZero,
SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch,
Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, LoadConstant, SlotToReg, OperatorInstruction, IsZero, SlotToReg,
SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, OperatorInstruction, IsZero, SlotToReg, Branch, LoadConstant,
Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, SlotToReg, OperatorInstruction, IsZero, SlotToReg, OperatorInstruction,
SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, IsZero, RegToSlot, LoadConstant, SlotToReg, LoadConstant,
Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, OperatorInstruction, IsZero, SlotToReg, Branch, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
Label, LoadConstant, SlotToReg, OperatorInstruction, IsZero, SlotToReg, LoadConstant, SlotToReg, DynamicJump, SlotToReg,
SlotToReg, OperatorInstruction, IsZero, Label, RegToSlot,
Label, LoadConstant, SlotToReg, LoadConstant, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
LoadConstant, SlotToReg, DynamicJump, Label, SlotToReg,
SlotToReg, LoadData, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg, LoadData, OperatorInstruction, LoadConstant, SlotToReg,
SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
@ -44,28 +42,28 @@ module Risc
end end
def test_call_main def test_call_main
call_ins = ticks(26) call_ins = ticks(25)
assert_equal FunctionCall , call_ins.class assert_equal FunctionCall , call_ins.class
assert_equal :main , call_ins.method.name assert_equal :main , call_ins.method.name
end end
def test_load_entry def test_load_entry
call_ins = main_ticks(5) call_ins = main_ticks(4)
assert_equal LoadConstant , call_ins.class assert_equal LoadConstant , call_ins.class
assert_equal Parfait::CacheEntry , call_ins.constant.class assert_equal Parfait::CacheEntry , call_ins.constant.class
end end
def test_dyn def test_dyn
cal = main_ticks(108) cal = main_ticks(99)
assert_equal DynamicJump , cal.class assert_equal DynamicJump , cal.class
end end
def test_return def test_return
ret = main_ticks(137) ret = main_ticks(127)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Label , link.class assert_equal Label , link.class
end end
def test_sys def test_sys
sys = main_ticks(139) sys = main_ticks(129)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
end end
end end

View File

@ -11,9 +11,9 @@ module Risc
def test_chain def test_chain
#show_main_ticks # get output of what is #show_main_ticks # get output of what is
check_main_chain [Label, LoadConstant, RegToSlot, SlotToReg, SlotToReg, check_main_chain [LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer, SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
Syscall, NilClass] NilClass]
assert_equal 5 , get_return.value assert_equal 5 , get_return.value
end end
@ -22,28 +22,23 @@ module Risc
assert_equal FunctionCall , call_ins.class assert_equal FunctionCall , call_ins.class
assert :main , call_ins.method.name assert :main , call_ins.method.name
end end
def test_label_main
call_ins = main_ticks(1)
assert_equal Label , call_ins.class
assert :main , call_ins.name
end
def test_load_5 def test_load_5
load_ins = main_ticks(2) load_ins = main_ticks(1)
assert_equal LoadConstant , load_ins.class assert_equal LoadConstant , load_ins.class
assert_equal 5 , @interpreter.get_register(load_ins.register).value assert_equal 5 , @interpreter.get_register(load_ins.register).value
end end
def test_return def test_return
ret = main_ticks(9) ret = main_ticks(8)
assert_equal FunctionReturn , ret.class assert_equal FunctionReturn , ret.class
link = @interpreter.get_register( ret.register ) link = @interpreter.get_register( ret.register )
assert_equal Label , link.class assert_equal Label , link.class
end end
def test_transfer def test_transfer
transfer = main_ticks(10) transfer = main_ticks(9)
assert_equal Transfer , transfer.class assert_equal Transfer , transfer.class
end end
def test_sys def test_sys
sys = main_ticks(11) sys = main_ticks(10)
assert_equal Syscall , sys.class assert_equal Syscall , sys.class
end end
end end

View File

@ -11,15 +11,14 @@ module Risc
def test_if def test_if
#show_main_ticks # get output of what is in main #show_main_ticks # get output of what is in main
check_main_chain [Label, LoadConstant, SlotToReg, RegToSlot, Label, check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant,
LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, LoadConstant, Branch,
OperatorInstruction, IsMinus, LoadConstant, Branch, Label,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
@ -29,30 +28,29 @@ module Risc
RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
LoadConstant, FunctionCall, Label, SlotToReg, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, RegToSlot, RegToSlot, RegToSlot, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg,
FunctionReturn, SlotToReg, SlotToReg, RegToSlot, Branch, SlotToReg, RegToSlot, Branch, LoadConstant, LoadConstant,
Label, LoadConstant, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, LoadConstant, FunctionCall, SlotToReg, OperatorInstruction, IsMinus, LoadConstant, RegToSlot,
Label, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, OperatorInstruction, IsMinus, Label, LoadConstant,
Label, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
IsZero, Label, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
FunctionReturn, Transfer, Syscall, NilClass] FunctionReturn, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_kind_of Parfait::Integer , get_return assert_kind_of Parfait::Integer , get_return
assert_equal 1 , get_return.value assert_equal 1 , get_return.value
end end
def test_exit def test_exit
done = main_ticks(183) done = main_ticks(170)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -11,16 +11,15 @@ module Risc
def test_if def test_if
#show_main_ticks # get output of what is in main #show_main_ticks # get output of what is in main
check_main_chain [Label, LoadConstant, SlotToReg, RegToSlot, Label, check_main_chain [LoadConstant, SlotToReg, RegToSlot, LoadConstant, LoadConstant,
LoadConstant, LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg, RegToSlot, RegToSlot, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, RegToSlot, SlotToReg, RegToSlot, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, LoadConstant, FunctionCall, Label, FunctionCall, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, IsMinus, IsZero, LoadConstant,
OperatorInstruction, IsMinus, IsZero, LoadConstant, Branch, Branch, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
Label, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
IsZero, LoadConstant, OperatorInstruction, IsZero, LoadConstant, IsZero, LoadConstant, OperatorInstruction, IsZero, LoadConstant,
@ -29,31 +28,29 @@ module Risc
SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, LoadConstant, FunctionCall, Label, SlotToReg, SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, OperatorInstruction, SlotToReg, SlotToReg, OperatorInstruction, LoadConstant, SlotToReg,
LoadConstant, SlotToReg, SlotToReg, RegToSlot, RegToSlot, SlotToReg, RegToSlot, RegToSlot, RegToSlot, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, FunctionReturn, SlotToReg, SlotToReg, RegToSlot,
Branch, Label, LoadConstant, LoadConstant, SlotToReg,
RegToSlot, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot,
LoadConstant, SlotToReg, RegToSlot, SlotToReg, LoadConstant,
FunctionCall, Label, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, OperatorInstruction, IsMinus, IsZero,
Label, LoadConstant, Label, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg, RegToSlot, Branch, LoadConstant,
LoadConstant, OperatorInstruction, IsZero, Label, SlotToReg, LoadConstant, SlotToReg, RegToSlot, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot, SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall, SlotToReg, RegToSlot, SlotToReg, RegToSlot, LoadConstant,
NilClass] SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
SlotToReg, FunctionCall, SlotToReg, SlotToReg, SlotToReg,
SlotToReg, SlotToReg, OperatorInstruction, IsMinus, IsZero,
LoadConstant, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, SlotToReg, SlotToReg,
RegToSlot, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction,
IsZero, SlotToReg, SlotToReg, RegToSlot, SlotToReg,
SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn,
Transfer, Syscall, NilClass]
assert_kind_of Parfait::Integer , get_return assert_kind_of Parfait::Integer , get_return
assert_equal 0 , get_return.value assert_equal 0 , get_return.value
end end
def test_exit def test_exit
done = main_ticks(185) done = main_ticks(172)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -11,48 +11,50 @@ module Risc
def test_if def test_if
#show_main_ticks # get output of what is in main #show_main_ticks # get output of what is in main
check_main_chain [Label, LoadConstant, SlotToReg, RegToSlot, Label, check_main_chain [LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
LoadConstant, OperatorInstruction, IsZero, LoadConstant, OperatorInstruction,
IsZero, LoadConstant, SlotToReg, RegToSlot, Branch,
SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero, SlotToReg, SlotToReg, LoadConstant, OperatorInstruction, IsZero,
LoadConstant, OperatorInstruction, IsZero, LoadConstant, SlotToReg, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
RegToSlot, Branch, Label, SlotToReg, SlotToReg, RegToSlot, SlotToReg, SlotToReg, FunctionReturn, Transfer,
LoadConstant, OperatorInstruction, IsZero, Label, SlotToReg, Syscall, NilClass]
SlotToReg, RegToSlot, SlotToReg, SlotToReg, RegToSlot,
SlotToReg, SlotToReg, FunctionReturn, Transfer, Syscall,
NilClass]
assert_kind_of Parfait::FalseClass , get_return assert_kind_of Parfait::FalseClass , get_return
end end
def test_load_false_const def test_load_false_const
load = main_ticks(2) load = main_ticks(1)
assert_equal LoadConstant , load.class assert_equal LoadConstant , load.class
assert_kind_of Parfait::TrueClass , load.constant assert_kind_of Parfait::TrueClass , load.constant
end end
def base
6
end
def test_load_false def test_load_false
load = main_ticks(8) load = main_ticks(base)
assert_equal LoadConstant , load.class assert_equal LoadConstant , load.class
assert_equal Parfait::FalseClass , load.constant.class assert_equal Parfait::FalseClass , load.constant.class
end end
def test_compare def test_compare
op = main_ticks(9) op = main_ticks(base+1)
assert_equal OperatorInstruction , op.class assert_equal OperatorInstruction , op.class
assert_equal :- , op.operator assert_equal :- , op.operator
end end
def test_not_zero def test_not_zero
check = main_ticks(10) check = main_ticks(base + 2)
assert_equal IsZero , check.class assert_equal IsZero , check.class
assert check.label.name.start_with?("merge_label") , check.label.name assert check.label.name.start_with?("merge_label") , check.label.name
end end
def test_compare2 def test_compare2
op = main_ticks(12) op = main_ticks(base + 4)
assert_equal OperatorInstruction , op.class assert_equal OperatorInstruction , op.class
assert_equal :- , op.operator assert_equal :- , op.operator
end end
def test_not_zero2 def test_not_zero2
check = main_ticks(13) check = main_ticks(base + 5)
assert_equal IsZero , check.class assert_equal IsZero , check.class
assert check.label.name.start_with?("merge_label") , check.label.name assert check.label.name.start_with?("merge_label") , check.label.name
end end
def test_exit def test_exit
done = main_ticks(35) done = main_ticks(31)
assert_equal Syscall , done.class assert_equal Syscall , done.class
end end
end end

View File

@ -1,7 +1,7 @@
require_relative '../helper' require_relative 'helper'
module Mains module Mains
class TestPuts < MainsTest class TestPuts #< MainsTest
def test_say_hi def test_say_hi
hi = "Hello there" hi = "Hello there"