From a3dd8094372a7e6210b1f2792fe8746254f1a9c4 Mon Sep 17 00:00:00 2001 From: sBubshait Date: Wed, 5 Jun 2024 23:30:20 +0100 Subject: [PATCH] Update execute, implemented the store instrs, w/ T --- src/execute.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/execute.c b/src/execute.c index 86aa33c..9c8734b 100644 --- a/src/execute.c +++ b/src/execute.c @@ -391,11 +391,11 @@ void execute_SDT(Machine *state, a64inst_instruction *inst) { state->registers[inst->data.SingleTransferData.target] = readDoubleWord(state->memory, address); } } else { - if (inst->data.SingleTransferData.regType == a64inst_W) { - // 32 bit access - state->registers[inst->data.SingleTransferData.target] = readWord(state->memory, address); - } else { - state->registers[inst->data.SingleTransferData.target] = readDoubleWord(state->memory, address); + *(word *)(state->memory + address) = state->registers[inst->data.SingleTransferData.target]; + + // Update base register if post indexed + if (inst->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode == a64inst_POST_INDEXED) { + writeRegister(state, inst->data.SingleTransferData.processOpData.singleDataTransferData.base, inst->data.SingleTransferData.regType == a64inst_W, address + inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.indexedOffset); } }