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