Mercurial > hg-old > index.cgi
diff lwasm/lwasm.h @ 347:1649bc7bda5a
Some data oriented pseudo ops added
author | lost@starbug |
---|---|
date | Sat, 27 Mar 2010 20:16:24 -0600 |
parents | a82c55070624 |
children | dcd2978a7d18 |
line wrap: on
line diff
--- a/lwasm/lwasm.h Sat Mar 27 19:04:03 2010 -0600 +++ b/lwasm/lwasm.h Sat Mar 27 20:16:24 2010 -0600 @@ -81,6 +81,13 @@ lwasm_error_t *next; // ptr to next error }; +struct line_expr_s +{ + lw_expr_t expr; + int id; + struct line_expr_s *next; +}; + typedef struct line_s line_t; struct line_s { @@ -95,6 +102,8 @@ lwasm_error_t *err; // list of errors line_t *prev; // previous line line_t *next; // next line + + struct line_expr_s *exprs; // expressions used during parsing asmstate_t *as; // assembler state data ptr }; @@ -139,6 +148,8 @@ int inmacro; // are we in a macro? int skipcond; // skipping a condition? int skipmacro; // are we skipping in a macro? + int endseen; // have we seen an "end" pseudo? + int execaddr; // address from "end" line_t *line_head; // start of lines list line_t *line_tail; // tail of lines list @@ -173,6 +184,13 @@ extern void lwasm_emit(line_t *cl, int byte); extern void lwasm_emitop(line_t *cl, int opc); +extern void lwasm_save_expr(line_t *cl, int id, lw_expr_t expr); +extern lw_expr_t lwasm_fetch_expr(line_t *cl, int id); +extern lw_expr_t lwasm_parse_expr(asmstate_t *as, char **p); +extern int lwasm_emitexpr(line_t *cl, lw_expr_t expr, int s); + +extern void skip_operand(char **p); + #endif #define OPLEN(op) (((op)>0xFF)?2:1)