diff options
Diffstat (limited to '')
-rw-r--r-- | masm/parse.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/masm/parse.c b/masm/parse.c index ccabf41..2a84a91 100644 --- a/masm/parse.c +++ b/masm/parse.c @@ -875,6 +875,20 @@ static int parse_directive_globl(struct parser *parser, return M_SUCCESS; } +static int parse_directive_ascii(struct parser *parser, + struct mips_directive *directive, + enum mips_directive_type type) +{ + struct token token; + if (assert_token(parser, TOK_STRING, &token)) + return M_ERROR; + + directive->type = type; + strcpy(directive->name, token.text); + + return M_SUCCESS; +} + static int parse_section(struct mips_directive *directive, char name[MAX_LEX_LENGTH]) { @@ -909,6 +923,12 @@ static int parse_directive(struct parser *parser, return parse_directive_extern(parser, directive); else if (strcmp(token.text, "globl") == 0) return parse_directive_globl(parser, directive); + else if (strcmp(token.text, "ascii") == 0) + return parse_directive_ascii(parser, directive, + MIPS_DIRECTIVE_ASCII); + else if (strcmp(token.text, "asciiz") == 0) + return parse_directive_ascii(parser, directive, + MIPS_DIRECTIVE_ASCIIZ); else return parse_section(directive, token.text); } |