fix str/ldr classification logic to avoid incorrect array indexing

This commit is contained in:
EDiasAlberto 2024-06-13 20:43:57 +01:00
parent f5d35ce246
commit 9507180dc9

View File

@ -199,11 +199,13 @@ void calculateAddressFormat(a64inst_instruction *instr, char *tokens[], int tok
instr->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = a64inst_PRE_INDEXED;
instr->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.indexedOffset = getOperandNumber(operands[1]);
} else if( (isOperandRegister(*operands[0]) == 1)
&& (isOperandRegister(*operands[1]) == 1)){
//register
instr->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = a64inst_REGISTER_OFFSET;
instr->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.offsetReg = getOperandNumber(operands[1]);
} else if(operandCount==2) {
if((isOperandRegister(*operands[0]) == 1)
&& (isOperandRegister(*operands[1]) == 1)){
//register
instr->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = a64inst_REGISTER_OFFSET;
instr->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.offsetReg = getOperandNumber(operands[1]);
}
} else if(unsplitString[strlen(unsplitString)-1] == ']') {
// POST_INDEXED
instr->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = a64inst_POST_INDEXED;