diff options
Diffstat (limited to 'asmmon.h')
-rw-r--r-- | asmmon.h | 53 |
1 files changed, 40 insertions, 13 deletions
@@ -47,7 +47,7 @@ struct ln { struct ln *next; /* Pointer to the next line. */ struct tok *tok; /* The token(s) for this line. */ uint16_t count; /* Total tokens for this line. */ - uint16_t linenum; /* Line number. */ + uint32_t linenum; /* Line number. */ uint64_t addr; /* The address of this line. */ uint8_t stab; /* Number of starting tabs. */ uint8_t sspace; /* Number of starting spaces. */ @@ -101,9 +101,10 @@ enum token { TOK_LABEL, TOK_SYM, TOK_EXPR, - TOK_COMMA, + TOK_CSV, TOK_STRING, TOK_CHAR, + TOK_IND, TOK_IMM, TOK_OPCODE, TOK_RS, @@ -114,6 +115,30 @@ enum token { TOK_INCLUDE }; +enum proto_token { + PTOK_DOT, + PTOK_COLON, + PTOK_EQU, + PTOK_PLUS, + PTOK_MINUS, + PTOK_GT, + PTOK_LT, + PTOK_LBRACK, + PTOK_RBRACK, + PTOK_COMMA, + PTOK_X, + PTOK_Y, + PTOK_DQUOTE, + PTOK_SQUOTE, + PTOK_HASH, + PTOK_SCOLON, + PTOK_DOLLAR, + PTOK_PERCENT, + PTOK_NUMBER, + PTOK_ALPHA, + PTOK_OTHER +}; + enum expr { EXPR_PLUS, EXPR_MINUS, @@ -230,22 +255,23 @@ static const char *rs_t[4] = { [3] = ".q" }; -static const char *lex_tok[15] = { +static const char *lex_tok[16] = { [0x0] = "TOK_DIR", [0x1] = "TOK_LABEL", [0x2] = "TOK_SYM", [0x3] = "TOK_EXPR", - [0x4] = "TOK_COMMA", + [0x4] = "TOK_CSV", [0x5] = "TOK_STRING", [0x6] = "TOK_CHAR", - [0x7] = "TOK_IMM", - [0x8] = "TOK_OPCODE", - [0x9] = "TOK_RS", - [0xA] = "TOK_COMMENT", - [0xB] = "TOK_HEX", - [0xC] = "TOK_DEC", - [0xD] = "TOK_BIN", - [0xE] = "TOK_INCLUDE" + [0x7] = "TOK_IND", + [0x8] = "TOK_IMM", + [0x9] = "TOK_OPCODE", + [0xA] = "TOK_RS", + [0xB] = "TOK_COMMENT", + [0xC] = "TOK_HEX", + [0xD] = "TOK_DEC", + [0xE] = "TOK_BIN", + [0xF] = "TOK_INCLUDE" }; static const char *adrmode[9] = { @@ -466,6 +492,7 @@ extern uint16_t lineidx; extern uint16_t stridx; extern uint16_t comidx; extern uint16_t inc_file; /* Number of included files. */ +extern uint16_t inc_count; struct bc { uint64_t progsize; @@ -485,7 +512,7 @@ extern char *get_symname(uint16_t id, uint8_t dbg); extern uint16_t get_symid(const char *name, uint64_t val, token *t, uint8_t dbg); extern uint16_t get_comment(const char *cmnt, uint8_t dbg); extern uint16_t reslv_fixups(uint8_t dbg); -extern line *find_line(uint16_t ln, uint8_t dbg); +extern line *find_line(uint32_t ln, uint8_t dbg); extern uint64_t lex(char *str, uint64_t address, uint8_t dbg); extern uint64_t parse_tokens(token *tm, bytecount *bc, uint8_t isasm, uint64_t address, uint8_t dbg); |