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:
Torsten Ruger
2017-01-19 09:02:29 +02:00
parent da5823a1a0
commit aa79e41d1c
127 changed files with 348 additions and 346 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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__

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,2 +0,0 @@
require_relative "../helper"
Register.machine.boot unless Register.machine.booted

2
test/risc/helper.rb Normal file
View File

@ -0,0 +1,2 @@
require_relative "../helper"
Risc.machine.boot unless Risc.machine.booted

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 , {})

View File

@ -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

View File

@ -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

View File

@ -1,6 +1,6 @@
require_relative "../helper"
module Register
module Risc
class TestInstructions < MiniTest::Test
def setup
@label = Label.new("test" , "test")

View File

@ -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

View File

@ -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])

View File

@ -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

View File

@ -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")

View File

@ -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

View File

@ -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 )

View File

@ -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 )

View File

@ -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

View File

@ -5,7 +5,7 @@ module Rubyx
class TestTypeCollector < MiniTest::Test
def setup
Register.machine.boot
Risc.machine.boot
end
def parse_collect( input )

View File

@ -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

View File

@ -5,7 +5,7 @@ module Rubyx
include CompilerHelper
def setup
Register.machine.boot
Risc.machine.boot
end
def create_method

View File

@ -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"

View File

@ -1,3 +1,3 @@
require_relative "../helper"
Register.machine.boot unless Register.machine.booted
Risc.machine.boot unless Risc.machine.booted

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,6 +1,6 @@
require_relative 'helper'
module Register
module Risc
class TestIfStatement < MiniTest::Test
include Statements

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,6 +1,6 @@
require_relative 'helper'
module Register
module Risc
class TestWhile < MiniTest::Test
include Statements

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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