diff --git a/src/parser.c b/src/parser.c index 5f9f652..92afb0a 100644 --- a/src/parser.c +++ b/src/parser.c @@ -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;