comparison lwasm/lwasm.h @ 374:8e25147c2aa8

Clean up various "externs" Apparently some compilers seriously choke on the "extern" keyword in some circumstances where GCC does not. Remove most instances of "extern" to guard against that. Thanks to Erik G <erik@6809.org> for the patch.
author William Astle <lost@l-w.ca>
date Mon, 13 Jul 2015 20:31:56 -0600
parents 8764142b3192
children 71f507f404f1
comparison
equal deleted inserted replaced
373:00fced888c5d 374:8e25147c2aa8
92 PRAGMA_CONDUNDEFZERO = 0x800, // treat undefined symbols as zero in conditionals during pass 1 92 PRAGMA_CONDUNDEFZERO = 0x800, // treat undefined symbols as zero in conditionals during pass 1
93 PRAGMA_6800COMPAT = 0x1000, // enable 6800 compatibility opcodes 93 PRAGMA_6800COMPAT = 0x1000, // enable 6800 compatibility opcodes
94 PRAGMA_FORWARDREFMAX = 0x2000, // force incomplete references on pass 1 to maximum mode 94 PRAGMA_FORWARDREFMAX = 0x2000, // force incomplete references on pass 1 to maximum mode
95 PRAGMA_6809 = 0x4000 // 6809/6309 assembly mode 95 PRAGMA_6809 = 0x4000 // 6809/6309 assembly mode
96 }; 96 };
97
98 97
99 enum 98 enum
100 { 99 {
101 section_flag_bss = 1, // BSS section 100 section_flag_bss = 1, // BSS section
102 section_flag_constant = 2, // constants - no base offset 101 section_flag_constant = 2, // constants - no base offset
386 int preprocess; // set if we are prepocessing 385 int preprocess; // set if we are prepocessing
387 int fileerr; // flags error opening file 386 int fileerr; // flags error opening file
388 int exprwidth; // the bit width of the expression being evaluated 387 int exprwidth; // the bit width of the expression being evaluated
389 }; 388 };
390 389
391 #ifndef ___symbol_c_seen___ 390 struct symtabe *register_symbol(asmstate_t *as, line_t *cl, char *sym, lw_expr_t value, int flags);
392 391 struct symtabe *lookup_symbol(asmstate_t *as, line_t *cl, char *sym);
393 extern struct symtabe *register_symbol(asmstate_t *as, line_t *cl, char *sym, lw_expr_t value, int flags);
394 extern struct symtabe *lookup_symbol(asmstate_t *as, line_t *cl, char *sym);
395
396 #endif
397 392
398 void lwasm_register_error(asmstate_t *as, line_t *cl, lwasm_errorcode_t err); 393 void lwasm_register_error(asmstate_t *as, line_t *cl, lwasm_errorcode_t err);
399 void lwasm_register_error2(asmstate_t *as, line_t *cl, lwasm_errorcode_t err, const char* fmt, ...); 394 void lwasm_register_error2(asmstate_t *as, line_t *cl, lwasm_errorcode_t err, const char* fmt, ...);
400 395
401 #ifndef ___lwasm_c_seen___ 396 int lwasm_next_context(asmstate_t *as);
402 397 void lwasm_emit(line_t *cl, int byte);
403 extern int lwasm_next_context(asmstate_t *as); 398 void lwasm_emitop(line_t *cl, int opc);
404 extern void lwasm_emit(line_t *cl, int byte); 399
405 extern void lwasm_emitop(line_t *cl, int opc); 400 void lwasm_save_expr(line_t *cl, int id, lw_expr_t expr);
406 401 lw_expr_t lwasm_fetch_expr(line_t *cl, int id);
407 extern void lwasm_save_expr(line_t *cl, int id, lw_expr_t expr); 402 lw_expr_t lwasm_parse_expr(asmstate_t *as, char **p);
408 extern lw_expr_t lwasm_fetch_expr(line_t *cl, int id); 403 int lwasm_emitexpr(line_t *cl, lw_expr_t expr, int s);
409 extern lw_expr_t lwasm_parse_expr(asmstate_t *as, char **p); 404
410 extern int lwasm_emitexpr(line_t *cl, lw_expr_t expr, int s); 405 void skip_operand(char **p);
411 406
412 extern void skip_operand(char **p); 407 int lwasm_lookupreg2(const char *rlist, char **p);
413 408 int lwasm_lookupreg3(const char *rlist, char **p);
414 extern int lwasm_lookupreg2(const char *rlist, char **p); 409
415 extern int lwasm_lookupreg3(const char *rlist, char **p); 410 void lwasm_show_errors(asmstate_t *as);
416 411
417 extern void lwasm_show_errors(asmstate_t *as); 412 int lwasm_reduce_expr(asmstate_t *as, lw_expr_t expr);
418 413
419 extern int lwasm_reduce_expr(asmstate_t *as, lw_expr_t expr); 414 lw_expr_t lwasm_parse_cond(asmstate_t *as, char **p);
420 415
421 extern lw_expr_t lwasm_parse_cond(asmstate_t *as, char **p); 416 int lwasm_calculate_range(asmstate_t *as, lw_expr_t expr, int *min, int *max);
422 417
423 extern int lwasm_calculate_range(asmstate_t *as, lw_expr_t expr, int *min, int *max); 418 void lwasm_reduce_line_exprs(line_t *cl);
424
425 extern void lwasm_reduce_line_exprs(line_t *cl);
426
427 #endif
428 419
429 #ifdef LWASM_NODEBUG 420 #ifdef LWASM_NODEBUG
430 #define debug_message(...) 421 #define debug_message(...)
431 #define dump_state(...) 422 #define dump_state(...)
432 #else 423 #else
433 extern void real_debug_message(asmstate_t *as, int level, const char *fmt, ...); 424 void real_debug_message(asmstate_t *as, int level, const char *fmt, ...);
434 extern void dump_state(asmstate_t *as); 425 void dump_state(asmstate_t *as);
435 426
436 #define debug_message(as,level,...) do { asmstate_t *ras = (as); int rlevel = (level); if (ras->debug_level >= rlevel) { real_debug_message(ras, rlevel, __VA_ARGS__); } } while (0) 427 #define debug_message(as,level,...) do { asmstate_t *ras = (as); int rlevel = (level); if (ras->debug_level >= rlevel) { real_debug_message(ras, rlevel, __VA_ARGS__); } } while (0)
437 #endif 428 #endif
438 429
439 #define OPLEN(op) (((op)>0xFF)?2:1) 430 #define OPLEN(op) (((op)>0xFF)?2:1)