From 3104da7f30b5bd83a92e6845753eb5ed083f29b8 Mon Sep 17 00:00:00 2001 From: GDBWNV <93523315+GDBWNV@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:24:55 +0100 Subject: [PATCH] dpr multiply --- src/parser.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/parser.c b/src/parser.c index 283f5db..9c1dacb 100644 --- a/src/parser.c +++ b/src/parser.c @@ -25,6 +25,7 @@ static const char *ARITHMETIC_OPCODES[] = {"add", "adds", "sub", "subs"}; static const char *MULTIPLY_OPCODES[] = {"mul", "madd", "msub", "mneg"}; static const char *SHIFT_TYPE_OPCODES[] = {"lsl", "lsr", "asr", "ror"}; static const char *LOGIC_OPCODES[] = {"and", "ands", "bic", "bics", "eor", "eon", "orr", "orn"}; +//static const char *ALIASES[] = {"cmp", "cmn", "neg", "negs", "tst", "mvn", "mov", "mul", "mneg"}; a64inst_instruction *parse(char **asmLines, int lineCount) { a64inst_instruction *instructions = malloc(sizeof(a64inst_instruction) * lineCount); @@ -329,13 +330,13 @@ void parseDPRegister(a64inst_instruction *inst, char *tokens[], int tokensCount) // Multiply data->DPROpType = a64inst_DPR_MULTIPLY; if (tokensCount >= 5) { - data->processOpData.multiplydata.summand = getOperandNumber(tokens[4]); - data->processOpData.multiplydata.negProd = strcmp(tokens[4], "mneg") == 0; - }else { - data->processOpData.multiplydata.summand = ZERO_REGISTER; - data->processOpData.multiplydata.negProd = false; + data->processOpData.multiplydata.summand = getOperandNumber(tokens[4]); + data->processOpData.multiplydata.negProd = strcmp(tokens[0], "msub") == 0; + } + else { + data->processOpData.multiplydata.summand = ZERO_REGISTER; + data->processOpData.multiplydata.negProd = strcmp(tokens[0], "mneg") == 0; } - } else { // Arithmetic/Logic data->DPROpType = a64inst_DPR_ARITHMLOGIC;