Mercurial > hg-old > index.cgi
view lwasm/lwasm.h @ 339:eb230fa7d28e
Prepare for migration to hg
author | lost |
---|---|
date | Fri, 19 Mar 2010 02:54:14 +0000 |
parents | 04c80c51b16a |
children | 1a6fc6ebb31c |
line wrap: on
line source
/* lwasm.h Copyright © 2010 William Astle This file is part of LWTOOLS. LWTOOLS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef ___lwasm_h_seen___ #define ___lwasm_h_seen___ #include <lw_expr.h> #include <lw_stringlist.h> #include <lw_stack.h> enum { lwasm_expr_linelen = 1 }; enum lwasm_output_e { OUTPUT_DECB = 0, // DECB multirecord format OUTPUT_RAW, // raw sequence of bytes OUTPUT_OBJ, // proprietary object file format OUTPUT_RAWREL, // raw bytes where ORG causes a SEEK in the file OUTPUT_OS9 // os9 module target }; enum lwasm_target_e { TARGET_6309 = 0, // target 6309 CPU TARGET_6809 // target 6809 CPU (no 6309 ops) }; enum lwasm_flags_e { FLAG_NONE = 0, FLAG_LIST = 0x0001, FLAG_DEPEND = 0x0002 }; enum lwasm_pragmas_e { PRAGMA_NONE = 0, // no pragmas in effect PRAGMA_DOLLARNOTLOCAL = 0x0001, // dollar sign does not make a symbol local PRAGMA_NOINDEX0TONONE = 0x0002, // do not change implicit 0,R to ,R PRAGMA_UNDEFEXTERN = 0x0004, // undefined symbols are considered to be external PRAGMA_CESCAPES = 0x0008, // allow C style escapes in fcc, fcs, fcn, etc. PRAGMA_IMPORTUNDEFEXPORT = 0x0010 // imports symbol if undefined upon export }; typedef struct line_s line_t; struct line_s { lw_expr_t addr; // assembly address of the line int len; // the "size" this line occupies (address space wise) (-1 if unknown) int insn; // number of insn in insn table line_t *prev; line_t *next; }; typedef struct { int output_format; // output format int target; // assembly target int debug_level; // level of debugging requested int flags; // assembly flags int pragmas; // pragmas currently in effect line_t *line_head; // start of lines list line_t *line_tail; // tail of lines list char *list_file; // name of file to list to char *output_file; // output file name lw_stringlist_t input_files; // files to assemble void *input_data; // opaque data used by the input system lw_stringlist_t include_list; // include paths lw_stack_t file_dir; // stack of the "current file" dir } asmstate_t; #endif /* ___lwasm_h_seen___ */