diff --git a/src/execute.c b/src/execute.c index 4171063..55f69e6 100644 --- a/src/execute.c +++ b/src/execute.c @@ -221,8 +221,7 @@ void execute_SDT(Machine *state, a64inst_instruction *inst) { isLoad = inst->data.SingleTransferData.processOpData.singleDataTransferData.transferType == a64inst_LOAD; switch (inst->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode) { case a64inst_UNSIGNED_OFFSET: - address += inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.unsignedOffset; - address *= inst->data.SingleTransferData.regType == a64inst_W ? 4 : 8; + address += inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.unsignedOffset * (inst->data.SingleTransferData.regType == a64inst_W ? 4 : 8); break; case a64inst_REGISTER_OFFSET: address += state->registers[inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.offsetReg];