comparison src/lwasm.h @ 101:f59c0916753d

Fixed relative branches and PCR addressing to handle constant intra-section references properly
author lost
date Fri, 23 Jan 2009 03:36:27 +0000
parents 81fc353d4d69
children 0ee5f65bccf9
comparison
equal deleted inserted replaced
100:579ac3697918 101:f59c0916753d
194 __lwasm_E__ void lwasm_emit(asmstate_t *as, lwasm_line_t *l, int b); 194 __lwasm_E__ void lwasm_emit(asmstate_t *as, lwasm_line_t *l, int b);
195 __lwasm_E__ void lwasm_emitop(asmstate_t *as, lwasm_line_t *l, int o); 195 __lwasm_E__ void lwasm_emitop(asmstate_t *as, lwasm_line_t *l, int o);
196 __lwasm_E__ int lwasm_lookupreg2(const char *reglist, char **str); 196 __lwasm_E__ int lwasm_lookupreg2(const char *reglist, char **str);
197 __lwasm_E__ int lwasm_lookupreg3(const char *rlist, const char **str); 197 __lwasm_E__ int lwasm_lookupreg3(const char *rlist, const char **str);
198 198
199 __lwasm_E__ lwasm_expr_stack_t *lwasm_evaluate_expr(asmstate_t *as, lwasm_line_t *l, const char *inp, const char **outp); 199 __lwasm_E__ lwasm_expr_stack_t *lwasm_evaluate_expr(asmstate_t *as, lwasm_line_t *l, const char *inp, const char **outp, int flags);
200 200
201 201
202 // return next context number and update it 202 // return next context number and update it
203 __lwasm_E__ int lwasm_next_context(asmstate_t *as); 203 __lwasm_E__ int lwasm_next_context(asmstate_t *as);
204 204
205 // also throw an error on expression eval failure 205 // also throw an error on expression eval failure
206 // return 0 on ok, -1 on error, 1 if a complex expression was returned 206 // return 0 on ok, -1 on error, 1 if a complex expression was returned
207 #define EXPR_NOFLAG 0 207 #define EXPR_NOFLAG 0
208 #define EXPR_PASS1CONST 1 // no forward references on pass 1 208 #define EXPR_PASS1CONST 1 // no forward references on pass 1
209 209 #define EXPR_SECTCONST 2 // resolve symbols local to section
210 #define EXPR_REEVAL 4 // re-evaluate the expression
210 __lwasm_E__ int lwasm_expr_result(asmstate_t *as, lwasm_line_t *l, char **inp, int flag, int *val); 211 __lwasm_E__ int lwasm_expr_result(asmstate_t *as, lwasm_line_t *l, char **inp, int flag, int *val);
211 __lwasm_E__ int lwasm_expr_result2(asmstate_t *as, lwasm_line_t *l, char **inp, int flag, int *val, int slot); 212 __lwasm_E__ int lwasm_expr_result2(asmstate_t *as, lwasm_line_t *l, char **inp, int flag, int *val, int slot);
212 213
213 #undef __lwasm_E__ 214 #undef __lwasm_E__
214 215