no-ops really

This commit is contained in:
Torsten Ruger 2018-05-23 18:06:55 +03:00
parent a2e7d7c469
commit f5d1090c39
7 changed files with 23 additions and 18 deletions

View File

@ -1,7 +1,7 @@
# A sample Guardfile
# More info at https://github.com/guard/guard#readme
guard :minitest do # with Minitest::Unit
guard :minitest , all_on_start: false do # with Minitest::Unit
# if any test file changes, run that test
watch(%r{^test/(.*)\/?test_(.*)\.rb$})

View File

@ -14,6 +14,7 @@ module Risc
class Instruction
def nil_next
@next = nil
self
end
def byte_length
4
@ -30,12 +31,13 @@ module Risc
end
class IdentityTranslator
def translate(code)
#return Label.new( code.source , code.name ) if code.is_a?(Label)
if( code.is_a?(Branch))
return code.class.new(code.source , code.label.to_cpu(self))
end
case code
when Branch
ret = code.class.new(code.source , code.label.to_cpu(self))
else
ret = code.dup
ret.nil_next
end
ret
end
end

View File

@ -14,7 +14,7 @@ module Risc
class Machine
include Util::Logging
log_level :debug
log_level :info
def initialize
@booted = false

View File

@ -16,7 +16,7 @@ module Risc
module Position
include Util::Logging
log_level :debug
log_level :info
@positions = {}

View File

@ -24,11 +24,14 @@ module Risc
preamble.each{ produced = produced.next }
produced
end
def as_test_main
"class Test; def main(arg);#{@input};end;end"
end
def produce_instructions
assert @expect , "No output given"
Vool::VoolCompiler.ruby_to_vool "class Test; def main(arg);#{@input};end;end"
Vool::VoolCompiler.ruby_to_binary as_test_main , :interpreter
test = Parfait.object_space.get_class_by_name :Test
test.instance_type.get_method( :main).risc_instructions
test.instance_type.get_method(:main).cpu_instructions
end
def check_nil
produced = produce_instructions

View File

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

View File

@ -25,7 +25,7 @@ module Risc
@translator = IdentityTranslator.new
end
def test_translate_label
def test_translate_first_label
label = Parfait.object_space.get_main.risc_instructions
assert_equal "Space_Type.main" ,label.to_cpu(@translator).name , label
end