diff options
author | Freya Murphy <freya@freyacat.org> | 2024-09-11 12:47:27 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-09-11 12:47:27 -0400 |
commit | c1a44ed41dcf92d1567ab927d7f1675d6918aff9 (patch) | |
tree | a9c385264b6a52087856addf568c941c56a5800d /masm/parse.h | |
parent | refactor (diff) | |
download | mips-c1a44ed41dcf92d1567ab927d7f1675d6918aff9.tar.gz mips-c1a44ed41dcf92d1567ab927d7f1675d6918aff9.tar.bz2 mips-c1a44ed41dcf92d1567ab927d7f1675d6918aff9.zip |
add ascii and asciiz directives, fix symtab bug
Diffstat (limited to 'masm/parse.h')
-rw-r--r-- | masm/parse.h | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/masm/parse.h b/masm/parse.h index 9181899..3052d51 100644 --- a/masm/parse.h +++ b/masm/parse.h @@ -9,9 +9,33 @@ #include <mips.h> #include <stdint.h> -/// -/// reference -/// +/* mips directive types */ +enum mips_directive_type { + MIPS_DIRECTIVE_ALIGN, + MIPS_DIRECTIVE_SPACE, + MIPS_DIRECTIVE_WORD, + MIPS_DIRECTIVE_HALF, + MIPS_DIRECTIVE_BYTE, + MIPS_DIRECTIVE_SECTION, + MIPS_DIRECTIVE_EXTERN, + MIPS_DIRECTIVE_GLOBL, + MIPS_DIRECTIVE_ASCII, + MIPS_DIRECTIVE_ASCIIZ, +}; + +/* mip32 directive */ +struct mips_directive { + enum mips_directive_type type; + uint32_t len; // used for words, halfs, bytes + union { + uint16_t align; + uint16_t space; + uint32_t words[MAX_ARG_LENGTH]; + uint16_t halfs[MAX_ARG_LENGTH]; + uint8_t bytes[MAX_ARG_LENGTH]; + char name[MAX_ARG_LENGTH]; + }; +}; enum reference_type { REF_NONE, |