Mercurial > hg-old > index.cgi
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; +}