From df28d2f83f00a9f07607507d9fc898c8d2b1f6e5 Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Mon, 24 Jul 2023 22:19:35 +0200 Subject: [PATCH] Value forwarding abs,x and abs,y --- oscar64/NativeCodeGenerator.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index 2f78137..74b5984 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -3928,6 +3928,12 @@ bool NativeCodeInstruction::ValueForwarding(NativeRegisterDataSet& data, AsmInsT mMode = ASMIM_IMPLIED; changed = true; } + else if (data.mRegs[CPU_REG_A].mMode == NRDM_ABSOLUTE_X && data.mRegs[CPU_REG_A].mLinkerObject == mLinkerObject && data.mRegs[CPU_REG_A].mValue == mAddress) + { + mType = ASMIT_TAY; + mMode = ASMIM_IMPLIED; + changed = true; + } else { data.mRegs[CPU_REG_Y].mMode = NRDM_ABSOLUTE_X; @@ -3985,6 +3991,12 @@ bool NativeCodeInstruction::ValueForwarding(NativeRegisterDataSet& data, AsmInsT mMode = ASMIM_IMPLIED; changed = true; } + else if (data.mRegs[CPU_REG_A].mMode == NRDM_ABSOLUTE_Y && data.mRegs[CPU_REG_A].mLinkerObject == mLinkerObject && data.mRegs[CPU_REG_A].mValue == mAddress) + { + mType = ASMIT_TAX; + mMode = ASMIM_IMPLIED; + changed = true; + } else { data.mRegs[CPU_REG_X].mMode = NRDM_ABSOLUTE_Y;