Mercurial > repos > tabletprog
changeset 356:3b023e5a0b42
llcompile almost working well enough for fib sample
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 15 Apr 2015 23:03:24 -0700 |
parents | 0b4d4f06bf91 |
children | f237d0cae58b |
files | modules/il.tp modules/llcompile.tp |
diffstat | 2 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/modules/il.tp Wed Apr 15 21:14:44 2015 -0700 +++ b/modules/il.tp Wed Apr 15 23:03:24 2015 -0700 @@ -452,7 +452,7 @@ } skipIf:else <- :_cond _toskip :_else { #{ - opcode <- { _skipif } + opcode <- { _skipifelse } toskip <- { _toskip } else <- { _else } cond <- { _cond } @@ -743,6 +743,15 @@ backend label } outprog <- #[] + //translate main first so it's at the start of the output + prepped ifget: "main" :instarr { + outprog append: (labels get: "main" else: { false }) + foreach: instarr :_ inst { + print: "Translating: " . inst . "\n" + backend convertIL: inst to: outprog withLabels: labels + } + } else: {} + foreach: prepped :name instarr { outprog append: (labels get: name else: { false }) foreach: instarr :_ inst {
--- a/modules/llcompile.tp Wed Apr 15 21:14:44 2015 -0700 +++ b/modules/llcompile.tp Wed Apr 15 23:03:24 2015 -0700 @@ -221,7 +221,7 @@ _compileExpr: expr syms: syms ilfun: ilf dest: asn } block <- ilf popBlock - ilf add: (il skipIf: (il neq) block) + ilf add: (il skipIf: (il eq) block) dest value: :d { d } none: { _compileError: "Something went wrong" } } } @@ -273,7 +273,7 @@ _compileExpr: expr syms: syms ilfun: ilf dest: (option none) } elseblock <- ilf popBlock - ilf add: (il skipIf: (il neq) block else: elseblock) + ilf add: (il skipIf: (il eq) block else: elseblock) dest value: :d { d } none: { _compileError: "Something went wrong" } } }