diff --git a/src/assembler/parse.c b/src/assembler/parse.c index d80bfc6..10cc270 100644 --- a/src/assembler/parse.c +++ b/src/assembler/parse.c @@ -130,10 +130,7 @@ static void parse_instruction(char asmLine[], a64inst_instruction *instr) { } static void parseDirective(a64inst_instruction *instr, char *opcode, char *tokens[], int tokensCount) { - char intValue[strlen(tokens[1]) + 1]; - *intValue = '#'; - strcpy(intValue + 1, tokens[1]); - instr->data.DirectiveData.value = getImmediate(intValue); + instr->data.DirectiveData.value = getImmediate(tokens[1]); } static void parseSingleTransfer(a64inst_instruction *instr, char *opcode, char *tokens[], int tokensCount) { diff --git a/src/assembler/string_util.c b/src/assembler/string_util.c index e519ef4..3ddb9af 100644 --- a/src/assembler/string_util.c +++ b/src/assembler/string_util.c @@ -96,10 +96,8 @@ int getImmediate(char *str) { return 0; } - if (str[0] != '#') - return 0; - - str++; // skip # + if (str[0] == '#') + str++; // skip # if (strncmp(str, "0x", 2) == 0 || strncmp(str, "0X", 3) == 0) { // Hex