From bec9cc704748f5743ecdb457ce3d3193e2d297b9 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sun, 27 Sep 2020 02:45:59 +0200 Subject: [PATCH] asm store/load same optimizer back.... --- .../src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt b/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt index 5a2e54c59..188bc9f76 100644 --- a/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt +++ b/compiler/src/prog8/compiler/target/c64/codegen/AsmOptimizer.kt @@ -31,6 +31,13 @@ fun optimizeAssembly(lines: MutableList): Int { numberOfOptimizations++ } + mods = optimizeStoreLoadSame(linesByFour) + if(mods.isNotEmpty()) { + apply(mods, lines) + linesByFour = getLinesBy(lines, 4) + numberOfOptimizations++ + } + mods= optimizeJsrRts(linesByFour) if(mods.isNotEmpty()) { apply(mods, lines) @@ -172,6 +179,7 @@ private fun optimizeSameAssignments(linesByFourteen: List>>): List { + // TODO not sure if this is correct in all situations....: // sta X + lda X, sty X + ldy X, stx X + ldx X -> the second instruction can be eliminated val mods = mutableListOf() for (pair in linesByFour) {