diff --git a/src/assembler/parse.c b/src/assembler/parse.c index 7020ed4..4c1e942 100644 --- a/src/assembler/parse.c +++ b/src/assembler/parse.c @@ -421,7 +421,7 @@ static void parseAddressingMode(a64inst_instruction *instr, char *tokens[], int instr->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = a64inst_UNSIGNED_OFFSET; if(operandCount > 1){ int offset = getImmediate(operands[1]); - instr->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.unsignedOffset = offset/8; + instr->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.unsignedOffset = instr->data.SingleTransferData.regType == a64inst_W ? offset/4 : offset/8; } } else { if((isRegister(operands[0]) == 1)