add, adds, cmn

This commit is contained in:
GDBWNV 2024-06-12 16:55:30 +01:00
parent 28b38f4a80
commit 3290896f6e

View File

@ -178,11 +178,7 @@ void classifyOpcode(char* opcode, a64inst_instruction *instr, char *operandList[
instr->type = a64inst_DPIMMEDIATE; instr->type = a64inst_DPIMMEDIATE;
a64inst_DPImmediateData data = instr->data.DPImmediateData; a64inst_DPImmediateData data = instr->data.DPImmediateData;
char t = operandList[0][0]; char t = operandList[0][0];
char *immOffset = NULL; int reg = getOperandNumber(operandList[0]);
immOffset = strcpy(immOffset, operandList[0]);
immOffset++;
char *endptr = NULL;
int reg = strtol(immOffset, &endptr, 10);
data.dest=reg; data.dest=reg;
if (t == 'w') { if (t == 'w') {
data.regType=0; data.regType=0;
@ -190,10 +186,25 @@ void classifyOpcode(char* opcode, a64inst_instruction *instr, char *operandList[
else { else {
data.regType=1; data.regType=1;
} }
// add // add, adds
if (opcode[1] == 'd') { if (opcode[1] == 'd') {
data.DPIOpType = 0; data.DPIOpType = 0;
data.processOpData.arithmData.src = getOperandNumber(operandList[1]);
data.processOpData.arithmData.immediate = getOperandNumber(operandList[2]);
if (opcode[-1] == 's') {
data.processOpData.arithmData.shiftImmediate = true;
}
else {
data.processOpData.arithmData.shiftImmediate = false;
}
}
// cmn
else if (opcode == "cmn") {
data.DPIOpType = 0;
data.processOpData.arithmData.src = ZERO_REGISTER;
data.processOpData.arithmData.immediate = getOperandNumber(operandList[1]);
data.processOpData.arithmData.shiftImmediate = true;
} }
} }