summaryrefslogtreecommitdiff
path: root/masm/parse.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--masm/parse.c20
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);
}