diff options
Diffstat (limited to 'asmmon.h')
-rw-r--r-- | asmmon.h | 99 |
1 files changed, 53 insertions, 46 deletions
@@ -2,8 +2,55 @@ #include <ctype.h> #include <string.h> -char lexeme[0x1000]; -uint8_t lex_type; +#define MAX_TOK 0x1000 + +struct line { + uint8_t stab; + uint8_t sspace; + uint8_t dir; + uint8_t mne; + uint8_t rs; + uint8_t opbase; + uint8_t aopbase; + uint8_t am; + uint8_t cm; + uint8_t etab; + uint8_t espace; + uint8_t islabel; + uint8_t issym; + uint16_t sym; + uint16_t com; + uint16_t str; + uint16_t incl; + uint16_t linenum; + uint64_t op; + uint64_t aop; + uint64_t addr; +}; + +struct fixup { + struct symbol *s; + uint16_t ln; + uint64_t adr; +}; + +struct symbol { + uint64_t val; + uint8_t def; + char name[128]; + uint16_t id; +}; + +extern char lexeme[]; +extern char *string[]; +extern char *comment[]; +extern uint16_t incl[]; +extern struct line tokline[]; +extern struct line tln[]; +extern struct symbol *symbols[]; +extern struct fixup *fixups[]; + +extern uint8_t lex_type; enum { DIR_ORG, @@ -383,57 +430,17 @@ static const uint8_t amp[8] = { [7] = 0x0F }; -struct line { - uint8_t stab; - uint8_t sspace; - uint8_t dir; - uint8_t mne; - uint8_t rs; - uint8_t opbase; - uint8_t aopbase; - uint8_t am; - uint8_t cm; - uint8_t etab; - uint8_t espace; - uint8_t islabel; - uint8_t issym; - uint16_t sym; - uint16_t com; - uint16_t str; - uint16_t incl; - uint16_t linenum; - uint64_t op; - uint64_t aop; - uint64_t addr; -}; extern uint16_t linenum; extern uint16_t lineidx; extern uint16_t stridx; extern uint16_t comidx; -char *string[0x1000]; -char *comment[0x1000]; -uint16_t incl[0x1000]; - -struct line tokline[0x1000]; -struct line tln[0x1000]; - -struct fixup { - struct symbol *s; - uint16_t ln; - uint64_t adr; -}; - -struct symbol { - uint64_t val; - uint8_t def; - char name[128]; - uint16_t id; -}; +typedef struct { + uint64_t progsize; + uint64_t datasize; +} bytecount; -struct symbol *symbols[0x1000]; -struct fixup *fixups[0x1000]; extern uint8_t defined; extern uint8_t isfixup; |