From 4689aba219048002e7135a45694fbd445a679732 Mon Sep 17 00:00:00 2001 From: sBubshait Date: Thu, 6 Jun 2024 16:31:59 +0100 Subject: [PATCH] Fix Bug: Fixed Post Indexed SDT to save AFTER the transfer --- src/execute.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/execute.c b/src/execute.c index 2d60bef..180487e 100644 --- a/src/execute.c +++ b/src/execute.c @@ -378,7 +378,6 @@ void execute_SDT(Machine *state, a64inst_instruction *inst) { state->registers[inst->data.SingleTransferData.processOpData.singleDataTransferData.base] = address; break; case a64inst_POST_INDEXED: - state->registers[inst->data.SingleTransferData.processOpData.singleDataTransferData.base] = address + inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.indexedOffset; break; } } @@ -396,7 +395,7 @@ void execute_SDT(Machine *state, a64inst_instruction *inst) { // Update base register if post indexed if (inst->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode == a64inst_POST_INDEXED) { dword result = address + signExtend(inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.indexedOffset, 9); - writeRegister(state, inst->data.SingleTransferData.processOpData.singleDataTransferData.base, inst->data.SingleTransferData.regType == a64inst_W, result); + writeRegister(state, inst->data.SingleTransferData.processOpData.singleDataTransferData.base, inst->data.SingleTransferData.regType, result); } }