diff lwasm/pass1.c @ 383:848d3cca8078

Fixed imm8 to actually use expression and also fixed gen mode to respect > and <
author lost@starbug
date Sat, 15 May 2010 20:01:58 -0600
parents eacdae8a1575
children cf8c92d70eb1
line wrap: on
line diff
--- a/lwasm/pass1.c	Sat May 15 13:39:21 2010 -0600
+++ b/lwasm/pass1.c	Sat May 15 20:01:58 2010 -0600
@@ -53,7 +53,7 @@
 	int stspace;
 	char *tok, *sym;
 	int opnum;
-	
+	int lc = 1;
 	for (;;)
 	{
 		sym = NULL;
@@ -74,6 +74,7 @@
 				as -> context = strtol(p1, NULL, 10);
 			}
 			lw_free(line);
+			lc = 1;
 			continue;
 		}
 		debug_message(as, 75, "Read line: %s", line);
@@ -81,6 +82,7 @@
 		cl = lw_alloc(sizeof(line_t));
 		memset(cl, 0, sizeof(line_t));
 		cl -> outputl = -1;
+		cl -> linespec = lw_strdup(input_curspec(as));
 		cl -> prev = as -> line_tail;
 		cl -> insn = -1;
 		cl -> as = as;
@@ -98,6 +100,7 @@
 		{
 			lw_expr_t te;
 
+			cl -> lineno = as -> line_tail -> lineno + 1;
 			as -> line_tail -> next = cl;
 
 			// set the line address
@@ -108,6 +111,14 @@
 
 			// carry DP value forward
 			cl -> dpval = cl -> prev -> dpval;
+			
+		}
+		if (!lc && strcmp(cl -> linespec, cl -> prev -> linespec))
+			lc = 1;
+		if (lc)
+		{
+			cl -> lineno = 1;
+			lc = 0;
 		}
 		as -> line_tail = cl;
 		as -> cl = cl;