fibinacci actually compiles, doesnt mean it works though
This commit is contained in:
@ -5,10 +5,9 @@ def fibonaccit(n) # n == r0
|
||||
tmp = a # r3 <- r1
|
||||
a = b # r1 <- r2
|
||||
b = tmp + b # r4 = r2 + r3 (r4 transient) r2 <- r4
|
||||
tmp = putint(b)
|
||||
putstring(tmp)
|
||||
n = n - 1 # r2 <- 0 ???? #call ok
|
||||
end #r5 <- r0 - 1 # r0 <- r5
|
||||
end
|
||||
putint(b)
|
||||
n = n - 1 # r0 <- r2 for call, #call ok
|
||||
end #r5 <- r0 - 1 n=n-1 through r5 tmp
|
||||
end # r0 <- r5
|
||||
|
||||
fibonaccit( 10 )
|
||||
|
@ -22,6 +22,7 @@ class TestRunner < MiniTest::Test
|
||||
parser = Parser::Crystal.new
|
||||
program = Vm::Program.new "Arm"
|
||||
syntax = parser.parse_with_debug(string)
|
||||
assert syntax
|
||||
parts = Parser::Transform.new.apply(syntax)
|
||||
# file is a list of expressions, all but the last must be a function
|
||||
# and the last is wrapped as a main
|
||||
@ -37,7 +38,7 @@ class TestRunner < MiniTest::Test
|
||||
program.link_at( 0 , program.context )
|
||||
|
||||
binary = program.assemble(StringIO.new )
|
||||
|
||||
assert binary
|
||||
writer = Elf::ObjectWriter.new(Elf::Constants::TARGET_ARM)
|
||||
blocks = program.functions.collect{ |f| [f.entry , f.exit , f.body] }
|
||||
blocks += [program.entry , program.exit , program.main]
|
||||
|
Reference in New Issue
Block a user