5fe0ba06ab
moving on to getting mom to work and can’t have both interpreter and elf broke, about 100 tests went
56 lines
2.1 KiB
Ruby
56 lines
2.1 KiB
Ruby
require_relative "helper"
|
|
|
|
module Risc
|
|
class IfCalledTest < MiniTest::Test
|
|
include Ticker
|
|
include CleanCompile
|
|
|
|
def setup
|
|
@string_input = <<HERE
|
|
class Space
|
|
int itest(int n)
|
|
if_zero( n - 12)
|
|
"then".putstring()
|
|
else
|
|
"else".putstring()
|
|
end
|
|
end
|
|
|
|
int main()
|
|
itest(20)
|
|
end
|
|
end
|
|
HERE
|
|
@input = s(:statements, s(:call, :itest , s(:arguments, s(:int, 20))))
|
|
super
|
|
end
|
|
|
|
# must be after boot, but before main compile, to define method
|
|
def do_clean_compile
|
|
clean_compile :Space , :itest , {:n => :Integer} ,
|
|
s(:statements, s(:if_statement, :zero, s(:condition, s(:operator_value, :-, s(:arg, :n), s(:int, 12))),
|
|
s(:true_statements, s(:call, :putstring , s(:arguments), s(:receiver, s(:string, "then")))),
|
|
s(:false_statements, s(:call, :putstring , s(:arguments), s(:receiver, s(:string, "else"))))))
|
|
end
|
|
def pest_if
|
|
#show_ticks # get output of what is
|
|
check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot,
|
|
LoadConstant, RegToSlot, FunctionCall, Label, SlotToReg,
|
|
SlotToReg, RegToSlot, LoadConstant, RegToSlot, LoadConstant,
|
|
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
|
LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label,
|
|
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
|
LoadConstant, OperatorInstruction, IsZero, SlotToReg, LoadConstant,
|
|
RegToSlot, LoadConstant, RegToSlot, LoadConstant, SlotToReg,
|
|
RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall,
|
|
Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
|
|
SlotToReg, RiscTransfer, Syscall, RiscTransfer, RiscTransfer,
|
|
RegToSlot, Label, FunctionReturn, RiscTransfer, SlotToReg,
|
|
SlotToReg, Branch, Label, Label, FunctionReturn,
|
|
RiscTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg,
|
|
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
|
NilClass]
|
|
end
|
|
end
|
|
end
|