diff lwasm/pseudo.c @ 350:f5666775d76f

Even more pseudo ops
author lost@starbug
date Sat, 27 Mar 2010 22:59:15 -0600
parents dcd2978a7d18
children 4dba8c7e242c
line wrap: on
line diff
--- a/lwasm/pseudo.c	Sat Mar 27 22:44:46 2010 -0600
+++ b/lwasm/pseudo.c	Sat Mar 27 22:59:15 2010 -0600
@@ -506,3 +506,40 @@
 	for (i = 0; i < l -> len; i++)
 		lwasm_emit(l, 0);	
 }
+
+PARSEFUNC(pseudo_parse_org)
+{
+	lw_expr_t e;
+	
+	e = lwasm_parse_expr(as, p);
+	if (!e)
+	{
+		lwasm_register_error(as, l, "Bad operand");
+		return;
+	}
+	
+	lw_expr_destroy(l -> addr);
+	l -> addr = e;
+	l -> len = 0;
+}
+
+PARSEFUNC(pseudo_parse_equ)
+{
+	lw_expr_t e;
+	
+	if (!(l -> sym))
+	{
+		lwasm_register_error(as, l, "Missing symbol");
+		return;
+	}
+	
+	e = lwasm_parse_expr(as, p);
+	if (!e)
+	{
+		lwasm_register_error(as, l, "Bad operand");
+		return;
+	}
+	
+	register_symbol(as, l, l -> sym, e, symbol_flag_none);
+	l -> symset = 1;
+}