From c6574b72f87001c34ef76b5bf58831c26bb5dad5 Mon Sep 17 00:00:00 2001 From: sBubshait Date: Mon, 3 Jun 2024 22:40:31 +0100 Subject: [PATCH] Fix Bug In Unsigned Offset SDT, multiply correctly, w/ T --- src/execute.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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];