rename register to risc
seems to fit the layer much better as we really have a very reduced instruction set
This commit is contained in:
@ -82,7 +82,7 @@ module Arm
|
||||
end
|
||||
|
||||
def label pos = 0x22
|
||||
l = Register.label("some" , "Label")
|
||||
l = Risc.label("some" , "Label")
|
||||
l.set_position pos
|
||||
l
|
||||
end
|
||||
|
@ -25,7 +25,7 @@ module Arm
|
||||
code.set_position(0)
|
||||
begin # mov 512(0x200) = e3 a0 0c 02 add 34(0x22) = e2 90 00 22
|
||||
assert_code code , :mov , [ 0x02,0x0c,0xb0,0xe3 , 0x22,0x00,0x90,0xe2]
|
||||
rescue Register::LinkException
|
||||
rescue Risc::LinkException
|
||||
retry
|
||||
end
|
||||
end
|
||||
@ -35,28 +35,28 @@ module Arm
|
||||
end
|
||||
|
||||
def test_shiftr1
|
||||
code = @machine.mov :r1, :r2 , :shift_asr => Register::RegisterValue.new(:r3 , :Integer)
|
||||
code = @machine.mov :r1, :r2 , :shift_asr => Risc::RiscValue.new(:r3 , :Integer)
|
||||
assert_code code , :mov , [0x52,0x13,0xb0,0xe1] #e1 b0 13 52
|
||||
end
|
||||
def test_shiftr2
|
||||
code = @machine.mov :r2, :r3 , :shift_asr => Register::RegisterValue.new(:r4 , :Integer)
|
||||
code = @machine.mov :r2, :r3 , :shift_asr => Risc::RiscValue.new(:r4 , :Integer)
|
||||
assert_code code , :mov , [0x53,0x24,0xb0,0xe1] #e1 b0 24 53
|
||||
end
|
||||
def test_shiftr3
|
||||
code = @machine.mov :r3, :r4 , :shift_asr => Register::RegisterValue.new(:r5 , :Integer)
|
||||
code = @machine.mov :r3, :r4 , :shift_asr => Risc::RiscValue.new(:r5 , :Integer)
|
||||
assert_code code , :mov , [0x54,0x35,0xb0,0xe1] #e1 b0 35 54
|
||||
end
|
||||
|
||||
def test_shiftl1
|
||||
code = @machine.mov :r1, :r2 , :shift_lsr => Register::RegisterValue.new(:r3 , :Integer)
|
||||
code = @machine.mov :r1, :r2 , :shift_lsr => Risc::RiscValue.new(:r3 , :Integer)
|
||||
assert_code code , :mov , [0x32,0x13,0xb0,0xe1] #e1 b0 13 32
|
||||
end
|
||||
def test_shiftl2
|
||||
code = @machine.mov :r2, :r3 , :shift_lsr => Register::RegisterValue.new(:r4 , :Integer)
|
||||
code = @machine.mov :r2, :r3 , :shift_lsr => Risc::RiscValue.new(:r4 , :Integer)
|
||||
assert_code code , :mov , [0x33,0x24,0xb0,0xe1] #e1 b0 24 33
|
||||
end
|
||||
def test_shiftl3
|
||||
code = @machine.mov :r3, :r4 , :shift_lsr => Register::RegisterValue.new(:r5 , :Integer)
|
||||
code = @machine.mov :r3, :r4 , :shift_lsr => Risc::RiscValue.new(:r5 , :Integer)
|
||||
assert_code code , :mov , [0x34,0x35,0xb0,0xe1] #e1 b0 35 34
|
||||
end
|
||||
|
||||
|
@ -8,7 +8,7 @@ module BenchTests
|
||||
|
||||
def setup
|
||||
@stdout = ""
|
||||
@machine = Register.machine.boot
|
||||
@machine = Risc.machine.boot
|
||||
# Vm::Compiler.load_parfait
|
||||
# most interesting parts saved as interger/word .soml in this dir
|
||||
end
|
||||
|
@ -4,9 +4,9 @@ class HelloTest < MiniTest::Test
|
||||
include AST::Sexp
|
||||
|
||||
def check
|
||||
machine = Register.machine.boot
|
||||
machine = Risc.machine.boot
|
||||
Vm.compile_ast( @input )
|
||||
objects = Register::Collector.collect_space
|
||||
objects = Risc::Collector.collect_space
|
||||
machine.translate_arm
|
||||
writer = Elf::ObjectWriter.new(machine , objects )
|
||||
writer.save "test/hello.o"
|
||||
|
@ -3,14 +3,14 @@ require_relative "../helper"
|
||||
class TestZeroCode < MiniTest::Test
|
||||
|
||||
def setup
|
||||
@machine = Register.machine.boot
|
||||
@machine = Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@space.each_type do | type |
|
||||
type.method_names.each do |method|
|
||||
type.remove_method(method) unless keeper(method)
|
||||
end
|
||||
end
|
||||
@objects = Register::Collector.collect_space
|
||||
@objects = Risc::Collector.collect_space
|
||||
end
|
||||
def keeper name
|
||||
name == :main or name == :__init__
|
||||
|
@ -28,7 +28,7 @@ module Compiling
|
||||
|
||||
end
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
# relies on @interpreter instance to be set up during setup
|
||||
module InterpreterHelpers
|
||||
|
||||
@ -68,7 +68,7 @@ module Register
|
||||
puts e
|
||||
puts e.backtrace
|
||||
end
|
||||
str = classes.to_s.gsub("Register::","")
|
||||
str = classes.to_s.gsub("Risc::","")
|
||||
str.split(",").each_slice(5).each do |line|
|
||||
puts " " + line.join(",") + ","
|
||||
end
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TestAttributes < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@mess = @space.first_message
|
||||
@type = @mess.get_type
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TestClass < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@try = @space.create_class :Try , :Object
|
||||
end
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TestMessage < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@mess = @space.first_message
|
||||
end
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TestNamedLists < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@named_list = @space.first_message.locals
|
||||
@type = @named_list.get_type
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TestSpace < MiniTest::Test
|
||||
|
||||
def setup
|
||||
@machine = Register.machine.boot
|
||||
@machine = Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
end
|
||||
|
||||
|
@ -3,7 +3,7 @@ module Parfait
|
||||
class TestEmptyWord < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@word = Parfait::Word.new(0)
|
||||
end
|
||||
def test_word_create
|
||||
@ -29,7 +29,7 @@ end
|
||||
class TestWord < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@word = Parfait::Word.new(5)
|
||||
end
|
||||
def test_len
|
||||
|
@ -1,2 +0,0 @@
|
||||
require_relative "../helper"
|
||||
Register.machine.boot unless Register.machine.booted
|
2
test/risc/helper.rb
Normal file
2
test/risc/helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
require_relative "../helper"
|
||||
Risc.machine.boot unless Risc.machine.booted
|
@ -1,18 +1,18 @@
|
||||
require_relative "../helper"
|
||||
require "register/interpreter"
|
||||
require "risc/interpreter"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
module Ticker
|
||||
include AST::Sexp
|
||||
include InterpreterHelpers
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
do_clean_compile
|
||||
Vm.compile_ast( @input )
|
||||
Collector.collect_space
|
||||
@interpreter = Interpreter.new
|
||||
@interpreter.start Register.machine.init
|
||||
@interpreter.start Risc.machine.init
|
||||
end
|
||||
|
||||
# must be after boot, but before main compile, to define method
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class AddTest < MiniTest::Test
|
||||
include Ticker
|
||||
|
||||
@ -21,7 +21,7 @@ HERE
|
||||
check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant,
|
||||
LoadConstant, OperatorInstruction, RegToSlot, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, Syscall,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
||||
NilClass]
|
||||
end
|
||||
|
||||
@ -32,7 +32,7 @@ HERE
|
||||
end
|
||||
def test_transfer
|
||||
transfer = ticks 19
|
||||
assert_equal RegisterTransfer , transfer.class
|
||||
assert_equal RiscTransfer , transfer.class
|
||||
assert_equal @interpreter.get_register(transfer.to) , @interpreter.get_register(transfer.from)
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestInterpretRegToByte < MiniTest::Test
|
||||
include Ticker
|
||||
|
||||
@ -26,11 +26,11 @@ HERE
|
||||
LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant,
|
||||
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot,
|
||||
RegisterTransfer, FunctionCall, Label, LoadConstant, SlotToReg,
|
||||
RiscTransfer, FunctionCall, Label, LoadConstant, SlotToReg,
|
||||
RegToSlot, SlotToReg, SlotToReg, SlotToReg, SlotToReg,
|
||||
SlotToReg, RegToByte, Label, FunctionReturn, RegisterTransfer,
|
||||
SlotToReg, RegToByte, Label, FunctionReturn, RiscTransfer,
|
||||
SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot,
|
||||
Label, FunctionReturn, RegisterTransfer, Syscall, NilClass]
|
||||
Label, FunctionReturn, RiscTransfer, Syscall, NilClass]
|
||||
end
|
||||
|
||||
def test_branch
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class IfCalledTest < MiniTest::Test
|
||||
include Ticker
|
||||
include Compiling
|
||||
@ -38,17 +38,17 @@ HERE
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, SlotToReg,
|
||||
SlotToReg, RegToSlot, LoadConstant, RegToSlot, LoadConstant,
|
||||
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label,
|
||||
LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label,
|
||||
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
LoadConstant, OperatorInstruction, IsZero, SlotToReg, LoadConstant,
|
||||
RegToSlot, LoadConstant, RegToSlot, LoadConstant, SlotToReg,
|
||||
RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall,
|
||||
RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall,
|
||||
Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, RegisterTransfer, Syscall, RegisterTransfer, RegisterTransfer,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, SlotToReg,
|
||||
SlotToReg, RiscTransfer, Syscall, RiscTransfer, RiscTransfer,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, SlotToReg,
|
||||
SlotToReg, Branch, Label, Label, FunctionReturn,
|
||||
RegisterTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, Syscall,
|
||||
RiscTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
||||
NilClass]
|
||||
end
|
||||
end
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class AddChange < MiniTest::Test
|
||||
include Ticker
|
||||
|
||||
@ -40,7 +40,7 @@ module Register
|
||||
check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant,
|
||||
LoadConstant, OperatorInstruction, RegToSlot, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, Syscall,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
||||
NilClass]
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class MultTest < MiniTest::Test
|
||||
include Ticker
|
||||
include AST::Sexp
|
||||
@ -22,7 +22,7 @@ HERE
|
||||
check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant,
|
||||
LoadConstant, OperatorInstruction, RegToSlot, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, Syscall,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
||||
NilClass]
|
||||
check_return 0
|
||||
end
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class PlusTest < MiniTest::Test
|
||||
include Ticker
|
||||
|
||||
@ -21,7 +21,7 @@ HERE
|
||||
check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant,
|
||||
LoadConstant, OperatorInstruction, RegToSlot, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, Syscall,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
||||
NilClass]
|
||||
check_return 0
|
||||
end
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestPuts < MiniTest::Test
|
||||
include Ticker
|
||||
|
||||
@ -21,12 +21,12 @@ HERE
|
||||
check_chain [Branch, Label, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, SlotToReg,
|
||||
LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant,
|
||||
SlotToReg, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer,
|
||||
SlotToReg, RegToSlot, LoadConstant, RegToSlot, RiscTransfer,
|
||||
FunctionCall, Label, LoadConstant, SlotToReg, RegToSlot,
|
||||
SlotToReg, SlotToReg, RegisterTransfer, Syscall, RegisterTransfer,
|
||||
RegisterTransfer, RegToSlot, Label, FunctionReturn, RegisterTransfer,
|
||||
SlotToReg, SlotToReg, RiscTransfer, Syscall, RiscTransfer,
|
||||
RiscTransfer, RegToSlot, Label, FunctionReturn, RiscTransfer,
|
||||
SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot,
|
||||
Label, FunctionReturn, RegisterTransfer, Syscall, NilClass]
|
||||
Label, FunctionReturn, RiscTransfer, Syscall, NilClass]
|
||||
end
|
||||
|
||||
def test_branch
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestInterpretByteToReg < MiniTest::Test
|
||||
include Ticker
|
||||
|
||||
@ -25,11 +25,11 @@ HERE
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, SlotToReg,
|
||||
LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant,
|
||||
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label,
|
||||
LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label,
|
||||
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
SlotToReg, ByteToReg, RegToSlot, Label, FunctionReturn,
|
||||
RegisterTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, Syscall,
|
||||
RiscTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
||||
NilClass]
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class IfSimpleTest < MiniTest::Test
|
||||
include Ticker
|
||||
include Compiling
|
||||
@ -30,12 +30,12 @@ HERE
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant,
|
||||
LoadConstant, OperatorInstruction, IsZero, SlotToReg, LoadConstant,
|
||||
RegToSlot, LoadConstant, RegToSlot, LoadConstant, SlotToReg,
|
||||
RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall,
|
||||
RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall,
|
||||
Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg,
|
||||
SlotToReg, RegisterTransfer, Syscall, RegisterTransfer, RegisterTransfer,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, SlotToReg,
|
||||
SlotToReg, RiscTransfer, Syscall, RiscTransfer, RiscTransfer,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, SlotToReg,
|
||||
SlotToReg, Branch, Label, LoadConstant, SlotToReg,
|
||||
RegToSlot, Label, FunctionReturn, RegisterTransfer, Syscall,
|
||||
RegToSlot, Label, FunctionReturn, RiscTransfer, Syscall,
|
||||
NilClass]
|
||||
end
|
||||
end
|
@ -1,10 +1,10 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestAssembler < MiniTest::Test
|
||||
|
||||
def setup
|
||||
@machine = Register.machine.boot
|
||||
@machine = Risc.machine.boot
|
||||
end
|
||||
def test_no_object
|
||||
@assembler = Assembler.new(@machine , {})
|
@ -1,10 +1,10 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestCollector < MiniTest::Test
|
||||
def test_simple_collect
|
||||
Machine.new.boot
|
||||
objects = Register::Collector.collect_space
|
||||
objects = Risc::Collector.collect_space
|
||||
assert ((350 < objects.length) or (430 > objects.length)) , objects.length.to_s
|
||||
end
|
||||
end
|
@ -4,7 +4,7 @@ require_relative "../helper"
|
||||
class TestCompat < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot unless Register.machine.booted
|
||||
Risc.machine.boot unless Risc.machine.booted
|
||||
end
|
||||
|
||||
def test_list_create_from_array
|
@ -1,6 +1,6 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestInstructions < MiniTest::Test
|
||||
def setup
|
||||
@label = Label.new("test" , "test")
|
@ -1,14 +1,14 @@
|
||||
require_relative "../helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestMachine < MiniTest::Test
|
||||
|
||||
def setup
|
||||
@machine = Register.machine.boot
|
||||
@machine = Risc.machine.boot
|
||||
end
|
||||
|
||||
def test_collect_all_types
|
||||
objects = Register::Collector.collect_space
|
||||
objects = Risc::Collector.collect_space
|
||||
objects.each do |id, objekt|
|
||||
next unless objekt.is_a?( Parfait::Type )
|
||||
assert Parfait.object_space.get_type_for( objekt.hash ) , objekt.hash
|
@ -2,7 +2,7 @@ require_relative "../helper"
|
||||
|
||||
class TestPositioned < MiniTest::Test
|
||||
def setup
|
||||
Register.machine.boot unless Register.machine.booted
|
||||
Risc.machine.boot unless Risc.machine.booted
|
||||
end
|
||||
def test_list1
|
||||
list = Parfait.new_list([1])
|
@ -3,6 +3,8 @@ require "register/interpreter"
|
||||
require "parser/ruby22"
|
||||
require "yaml"
|
||||
|
||||
# An experiment to find out how much ruby there is to achieve bootstrap
|
||||
#
|
||||
class Walker < AST::Processor
|
||||
def initialize collector
|
||||
@collector = collector
|
||||
|
@ -1,12 +1,12 @@
|
||||
require_relative '../helper'
|
||||
require "register/interpreter"
|
||||
require "risc/interpreter"
|
||||
require "parser/ruby22"
|
||||
|
||||
module Rubyx
|
||||
module RubyxTests
|
||||
include CompilerHelper
|
||||
include Register::InterpreterHelpers
|
||||
subs = ObjectSpace.each_object(Class).select { |klass| klass < Register::Instruction }
|
||||
include Risc::InterpreterHelpers
|
||||
subs = ObjectSpace.each_object(Class).select { |klass| klass < Risc::Instruction }
|
||||
subs.each do |clazz|
|
||||
name = clazz.to_s
|
||||
next if name.include?("Arm")
|
||||
|
@ -3,17 +3,17 @@ require_relative 'helper'
|
||||
module Rubyx
|
||||
class TestRubyHello < MiniTest::Test
|
||||
include RubyxTests
|
||||
Branch = Register::Branch
|
||||
Label = Register::Label
|
||||
Branch = Risc::Branch
|
||||
Label = Risc::Label
|
||||
|
||||
def setup
|
||||
@string_input = as_main '"Hello there".putstring'
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
# do_clean_compile
|
||||
RubyCompiler.compile @string_input
|
||||
Register::Collector.collect_space
|
||||
@interpreter = Register::Interpreter.new
|
||||
@interpreter.start Register.machine.init
|
||||
Risc::Collector.collect_space
|
||||
@interpreter = Risc::Interpreter.new
|
||||
@interpreter.start Risc.machine.init
|
||||
end
|
||||
|
||||
def test_chain
|
||||
@ -22,16 +22,16 @@ module Rubyx
|
||||
LoadConstant, RegToSlot, FunctionCall, Label, LoadConstant,
|
||||
SlotToReg, RegToSlot, SlotToReg, LoadConstant, RegToSlot,
|
||||
LoadConstant, RegToSlot, LoadConstant, SlotToReg, RegToSlot,
|
||||
LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label,
|
||||
LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label,
|
||||
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg,
|
||||
RegisterTransfer, Syscall, RegisterTransfer, RegisterTransfer, RegToSlot,
|
||||
Label, FunctionReturn, RegisterTransfer, SlotToReg, SlotToReg,
|
||||
Label, FunctionReturn, RegisterTransfer, Syscall, NilClass]
|
||||
RiscTransfer, Syscall, RiscTransfer, RiscTransfer, RegToSlot,
|
||||
Label, FunctionReturn, RiscTransfer, SlotToReg, SlotToReg,
|
||||
Label, FunctionReturn, RiscTransfer, Syscall, NilClass]
|
||||
end
|
||||
|
||||
def test_overflow
|
||||
instruction = ticks( 24 )
|
||||
assert_equal Register::FunctionCall , instruction.class
|
||||
assert_equal Risc::FunctionCall , instruction.class
|
||||
assert_equal :putstring , instruction.method.name
|
||||
end
|
||||
|
||||
|
@ -5,7 +5,7 @@ module Rubyx
|
||||
class TestLocalsCollector < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot unless Register.machine.booted
|
||||
Risc.machine.boot unless Risc.machine.booted
|
||||
end
|
||||
|
||||
def parse_collect( input )
|
||||
|
@ -5,7 +5,7 @@ module Rubyx
|
||||
class TestMethodCollector < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot unless Register.machine.booted
|
||||
Risc.machine.boot unless Risc.machine.booted
|
||||
end
|
||||
|
||||
def parse_collect( input )
|
||||
|
@ -5,7 +5,7 @@ module Rubyx
|
||||
class TestNormalizer < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot unless Register.machine.booted
|
||||
Risc.machine.boot unless Risc.machine.booted
|
||||
end
|
||||
|
||||
def test_no_thing
|
||||
|
@ -5,7 +5,7 @@ module Rubyx
|
||||
class TestTypeCollector < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
end
|
||||
|
||||
def parse_collect( input )
|
||||
|
@ -4,7 +4,7 @@ module Rubyx
|
||||
class TestCompiler < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
end
|
||||
|
||||
def test_doesnt_create_existing_clas
|
||||
|
@ -5,7 +5,7 @@ module Rubyx
|
||||
include CompilerHelper
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
end
|
||||
|
||||
def create_method
|
||||
|
@ -8,6 +8,6 @@ require_relative "rubyx/test_all"
|
||||
|
||||
require_relative "parfait/test_all"
|
||||
|
||||
require_relative "register/test_all"
|
||||
require_relative "risc/test_all"
|
||||
|
||||
require_relative "vm/test_all"
|
||||
|
@ -1,3 +1,3 @@
|
||||
require_relative "../helper"
|
||||
|
||||
Register.machine.boot unless Register.machine.booted
|
||||
Risc.machine.boot unless Risc.machine.booted
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative '../helper'
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
module SpaceHack
|
||||
# test hack to in place change object type
|
||||
def add_space_field(name,type)
|
||||
@ -12,7 +12,7 @@ module Register
|
||||
include SpaceHack
|
||||
|
||||
def check
|
||||
Register.machine.boot unless Register.machine.booted
|
||||
Risc.machine.boot unless Risc.machine.booted
|
||||
compiler = Vm::MethodCompiler.new Parfait.object_space.get_main
|
||||
code = Vm.ast_to_code @input
|
||||
assert code.to_s , @input
|
||||
@ -30,7 +30,7 @@ module Register
|
||||
include SpaceHack
|
||||
|
||||
def setup
|
||||
Register.machine.boot # force boot to reset main
|
||||
Risc.machine.boot # force boot to reset main
|
||||
end
|
||||
|
||||
def preamble
|
||||
@ -71,7 +71,7 @@ module Register
|
||||
def should( all )
|
||||
#preamble.each {all.shift}
|
||||
#postamble.each {all.pop}
|
||||
str = all.to_s.gsub("Register::","")
|
||||
str = all.to_s.gsub("Risc::","")
|
||||
ret = ""
|
||||
str.split(",").each_slice(6).each do |line|
|
||||
ret += " " + line.join(",") + " ,\n"
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative 'helper'
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestAssignStatement < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
@ -44,8 +44,8 @@ module Register
|
||||
Parfait.object_space.get_main.add_local(:r , :Object)
|
||||
@input = s(:statements, s(:l_assignment, s(:local, :r), s(:call, :main, s(:arguments))))
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer ,
|
||||
FunctionCall, Label, RegisterTransfer, SlotToReg, SlotToReg, SlotToReg ,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RiscTransfer ,
|
||||
FunctionCall, Label, RiscTransfer, SlotToReg, SlotToReg, SlotToReg ,
|
||||
RegToSlot, LoadConstant, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
@ -1,14 +1,14 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
|
||||
class TestBasic < MiniTest::Test
|
||||
include ExpressionHelper
|
||||
include AST::Sexp
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
@output = Register::RegisterValue
|
||||
Risc.machine.boot
|
||||
@output = Risc::RiscValue
|
||||
end
|
||||
|
||||
def test_number
|
||||
|
@ -1,13 +1,13 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestCall < MiniTest::Test
|
||||
include ExpressionHelper
|
||||
include AST::Sexp
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
@output = Register::RegisterValue
|
||||
Risc.machine.boot
|
||||
@output = Risc::RiscValue
|
||||
end
|
||||
|
||||
def test_call_main_plain
|
||||
|
@ -1,7 +1,7 @@
|
||||
require_relative 'helper'
|
||||
require_relative "test_call_expression"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestCallStatement < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
@ -9,8 +9,8 @@ module Register
|
||||
clean_compile :Integer, :puti, {}, s(:statements, s(:return, s(:int, 1)))
|
||||
@input = s(:call, :puti , s(:arguments), s(:receiver, s(:int, 42)))
|
||||
@expect = [Label, SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
SlotToReg, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label ,
|
||||
RegisterTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot, Label ,
|
||||
SlotToReg, RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label ,
|
||||
RiscTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot, Label ,
|
||||
FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
@ -21,8 +21,8 @@ module Register
|
||||
|
||||
@input =s(:call, :putstr, s(:arguments), s(:receiver, s(:string, "Hello")))
|
||||
@expect = [Label, SlotToReg, LoadConstant, RegToSlot, LoadConstant, RegToSlot, LoadConstant ,
|
||||
SlotToReg, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label ,
|
||||
RegisterTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot, Label ,
|
||||
SlotToReg, RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label ,
|
||||
RiscTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot, Label ,
|
||||
FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
@ -34,7 +34,7 @@ module Register
|
||||
|
||||
@expect = [Label, LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg ,
|
||||
RegToSlot, LoadConstant, RegToSlot, LoadConstant, SlotToReg, RegToSlot, LoadConstant ,
|
||||
RegToSlot, RegisterTransfer, FunctionCall, Label, RegisterTransfer, SlotToReg, SlotToReg ,
|
||||
RegToSlot, RiscTransfer, FunctionCall, Label, RiscTransfer, SlotToReg, SlotToReg ,
|
||||
LoadConstant, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
@ -45,8 +45,8 @@ module Register
|
||||
|
||||
@input =s(:statements, s(:call, :add, s(:arguments), s(:receiver, s(:local, :test_l))))
|
||||
@expect = [Label, SlotToReg, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall ,
|
||||
Label, RegisterTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall ,
|
||||
Label, RiscTransfer, SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot ,
|
||||
Label, FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
@ -56,7 +56,7 @@ module Register
|
||||
@input =s(:call, :putstr , s(:arguments, s(:string, "Hello") ) )
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot ,
|
||||
LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label, RegisterTransfer ,
|
||||
LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label, RiscTransfer ,
|
||||
SlotToReg, SlotToReg, LoadConstant, SlotToReg, RegToSlot, Label ,
|
||||
FunctionReturn]
|
||||
was = check_return
|
||||
|
@ -1,12 +1,12 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestFields < MiniTest::Test
|
||||
include ExpressionHelper
|
||||
include AST::Sexp
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
end
|
||||
|
||||
def test_field_not_defined
|
||||
@ -26,7 +26,7 @@ module Register
|
||||
add_space_field(:bro,:Object)
|
||||
@root = :field_access
|
||||
@input = s(:field_access,s(:receiver, s(:known, :self)),s(:field,s(:ivar, :bro)))
|
||||
@output = Register::RegisterValue
|
||||
@output = Risc::RiscValue
|
||||
check
|
||||
end
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
require_relative 'helper'
|
||||
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestFieldStatement < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
@ -23,8 +23,8 @@ module Register
|
||||
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, SlotToReg, SlotToReg, SlotToReg ,
|
||||
RegToSlot, LoadConstant, RegToSlot, RegisterTransfer, FunctionCall, Label ,
|
||||
RegisterTransfer, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg ,
|
||||
RegToSlot, LoadConstant, RegToSlot, RiscTransfer, FunctionCall, Label ,
|
||||
RiscTransfer, SlotToReg, SlotToReg, RegToSlot, LoadConstant, SlotToReg ,
|
||||
RegToSlot, Label, FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
@ -33,7 +33,7 @@ module Register
|
||||
Parfait.object_space.get_main.add_local(:name , :Word)
|
||||
@input = s(:statements, s(:l_assignment, s(:local, :name), s(:field_access, s(:receiver, s(:known, :message)), s(:field, s(:ivar, :name)))), s(:return, s(:local, :name)))
|
||||
|
||||
@expect = [Label, RegisterTransfer, SlotToReg, SlotToReg, RegToSlot, SlotToReg ,
|
||||
@expect = [Label, RiscTransfer, SlotToReg, SlotToReg, RegToSlot, SlotToReg ,
|
||||
SlotToReg, RegToSlot, LoadConstant, SlotToReg, RegToSlot, Label ,
|
||||
FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative 'helper'
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestIfStatement < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
|
@ -1,32 +1,32 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestFields < MiniTest::Test
|
||||
include ExpressionHelper
|
||||
include AST::Sexp
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
end
|
||||
|
||||
def test_local
|
||||
Parfait.object_space.get_main.add_local(:bar , :Integer)
|
||||
@input = s(:local, :bar)
|
||||
@output = Register::RegisterValue
|
||||
@output = Risc::RiscValue
|
||||
check
|
||||
end
|
||||
|
||||
def test_space
|
||||
@root = :name
|
||||
@input = s(:known, :space)
|
||||
@output = Register::RegisterValue
|
||||
@output = Risc::RiscValue
|
||||
check
|
||||
end
|
||||
|
||||
def test_args
|
||||
Parfait.object_space.get_main.add_argument(:bar , :Integer)
|
||||
@input = s(:arg, :bar)
|
||||
@output = Register::RegisterValue
|
||||
@output = Risc::RiscValue
|
||||
check
|
||||
end
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestOps < MiniTest::Test
|
||||
include ExpressionHelper
|
||||
include AST::Sexp
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@root = :operator_value
|
||||
@output = Register::RegisterValue
|
||||
@output = Risc::RiscValue
|
||||
end
|
||||
|
||||
def operators
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative 'helper'
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestReturnStatement < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
@ -30,8 +30,8 @@ module Register
|
||||
def test_return_call
|
||||
@input =s(:statements, s(:return, s(:call, :main, s(:arguments))))
|
||||
@expect = [Label, SlotToReg, SlotToReg, RegToSlot, LoadConstant, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RegisterTransfer ,
|
||||
FunctionCall, Label, RegisterTransfer, SlotToReg, SlotToReg, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, LoadConstant, RegToSlot, RiscTransfer ,
|
||||
FunctionCall, Label, RiscTransfer, SlotToReg, SlotToReg, RegToSlot ,
|
||||
LoadConstant, SlotToReg, RegToSlot, Label, FunctionReturn]
|
||||
assert_nil msg = check_nil , msg
|
||||
end
|
||||
|
@ -1,6 +1,6 @@
|
||||
require_relative 'helper'
|
||||
|
||||
module Register
|
||||
module Risc
|
||||
class TestWhile < MiniTest::Test
|
||||
include Statements
|
||||
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class BasicType < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@mess = @space.first_message
|
||||
assert @mess
|
||||
@ -58,7 +58,7 @@ class BasicType < MiniTest::Test
|
||||
|
||||
# not really parfait test, but related and no other place currently
|
||||
def test_reg_index
|
||||
message_ind = Register.resolve_to_index( :message , :receiver )
|
||||
message_ind = Risc.resolve_to_index( :message , :receiver )
|
||||
assert_equal 3 , message_ind
|
||||
@mess.set_receiver( 55)
|
||||
assert_equal 55 , @mess.get_internal_word(message_ind)
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TypeHash < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@types = @space.instance_variable_get("@types")
|
||||
@first = @types.values.first
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TypeMessages < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@mess = @space.first_message
|
||||
end
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TestMethodApi < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
@try_class = @space.create_class( :Try )
|
||||
@try_type = @try_class.instance_type
|
||||
|
@ -3,7 +3,7 @@ require_relative "../helper"
|
||||
class TypeApi < MiniTest::Test
|
||||
|
||||
def setup
|
||||
Register.machine.boot
|
||||
Risc.machine.boot
|
||||
@space = Parfait.object_space
|
||||
tc = @space.get_class_by_name( :NamedList )
|
||||
@type = tc.instance_type
|
||||
|
Reference in New Issue
Block a user