diff lwasm/pseudo.c @ 387:a741d2e4869f

Various bugfixes; fixed lwobjdump to display symbols with unprintable characters more sensibly; start of a (nonfunctional for now) testing framework
author lost@l-w.ca
date Wed, 14 Jul 2010 20:15:23 -0600
parents af5f2c51db76
children fbb7bfed8076
line wrap: on
line diff
--- a/lwasm/pseudo.c	Sun May 16 13:03:17 2010 -0600
+++ b/lwasm/pseudo.c	Wed Jul 14 20:15:23 2010 -0600
@@ -657,18 +657,8 @@
 		return;
 	}
 
-	e = lwasm_parse_expr(as, p);
-	if (!e)
-	{
-		lwasm_register_error(as, l, "Bad expression");
-		return;
-	}
-	if (!lw_expr_istype(e, lw_expr_type_int))
-	{
-		lwasm_register_error(as, l, "Conditions must be constant on pass 1");
-		return;
-	}
-	if (lw_expr_intval(e) != 0)
+	e = lwasm_parse_cond(as, p);
+	if (e && lw_expr_intval(e) != 0)
 	{
 		as -> skipcond = 1;
 		as -> skipcount = 1;
@@ -688,18 +678,8 @@
 		return;
 	}
 
-	e = lwasm_parse_expr(as, p);
-	if (!e)
-	{
-		lwasm_register_error(as, l, "Bad expression");
-		return;
-	}
-	if (!lw_expr_istype(e, lw_expr_type_int))
-	{
-		lwasm_register_error(as, l, "Conditions must be constant on pass 1");
-		return;
-	}
-	if (lw_expr_intval(e) == 0)
+	e = lwasm_parse_cond(as, p);
+	if (e && lw_expr_intval(e) == 0)
 	{
 		as -> skipcond = 1;
 		as -> skipcount = 1;
@@ -720,18 +700,8 @@
 		return;
 	}
 
-	e = lwasm_parse_expr(as, p);
-	if (!e)
-	{
-		lwasm_register_error(as, l, "Bad expression");
-		return;
-	}
-	if (!lw_expr_istype(e, lw_expr_type_int))
-	{
-		lwasm_register_error(as, l, "Conditions must be constant on pass 1");
-		return;
-	}
-	if (lw_expr_intval(e) <= 0)
+	e = lwasm_parse_cond(as, p);
+	if (e && lw_expr_intval(e) <= 0)
 	{
 		as -> skipcond = 1;
 		as -> skipcount = 1;
@@ -751,18 +721,8 @@
 		return;
 	}
 
-	e = lwasm_parse_expr(as, p);
-	if (!e)
-	{
-		lwasm_register_error(as, l, "Bad expression");
-		return;
-	}
-	if (!lw_expr_istype(e, lw_expr_type_int))
-	{
-		lwasm_register_error(as, l, "Conditions must be constant on pass 1");
-		return;
-	}
-	if (lw_expr_intval(e) < 0)
+	e = lwasm_parse_cond(as, p);
+	if (e && lw_expr_intval(e) < 0)
 	{
 		as -> skipcond = 1;
 		as -> skipcount = 1;
@@ -782,18 +742,8 @@
 		return;
 	}
 
-	e = lwasm_parse_expr(as, p);
-	if (!e)
-	{
-		lwasm_register_error(as, l, "Bad expression");
-		return;
-	}
-	if (!lw_expr_istype(e, lw_expr_type_int))
-	{
-		lwasm_register_error(as, l, "Conditions must be constant on pass 1");
-		return;
-	}
-	if (lw_expr_intval(e) >= 0)
+	e = lwasm_parse_cond(as, p);
+	if (e && lw_expr_intval(e) >= 0)
 	{
 		as -> skipcond = 1;
 		as -> skipcount = 1;
@@ -813,18 +763,8 @@
 		return;
 	}
 
-	e = lwasm_parse_expr(as, p);
-	if (!e)
-	{
-		lwasm_register_error(as, l, "Bad expression");
-		return;
-	}
-	if (!lw_expr_istype(e, lw_expr_type_int))
-	{
-		lwasm_register_error(as, l, "Conditions must be constant on pass 1");
-		return;
-	}
-	if (lw_expr_intval(e) > 0)
+	e = lwasm_parse_cond(as, p);
+	if (e && lw_expr_intval(e) > 0)
 	{
 		as -> skipcond = 1;
 		as -> skipcount = 1;