dpr multiply

This commit is contained in:
GDBWNV 2024-06-13 20:24:55 +01:00
parent 04df4ea795
commit 3104da7f30

View File

@ -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;