From b04edfb2415cf39c9541e53e05470022b1a81101 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sun, 10 Mar 2019 01:44:47 +0100 Subject: [PATCH] Added needed synthesis rules. --- .../AsmFragmentTemplateSynthesisRule.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java index eef66ae1b..d0f4de3e7 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java @@ -466,30 +466,29 @@ class AsmFragmentTemplateSynthesisRule { synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuaa=(.*)", twoZ1, "sta $ff" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZ)); // Rewrite (Z1),x to save A to $FF and reload it into YY synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuxx=(.*)", twoZ1, "stx $ff" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZ)); - // Rewrite (Z1),a to use TAY prefix synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuaa=(.*)", twoZ1+"|"+rvalYy, "tay" , "vb$1aa=$2", "sta ({z1}),y", mapZ, "yy")); // Rewrite constant byte values to constant word values synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", null, null , "$1vw$2c1$3", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c2(.*)", null, null , "$1vw$2c2$3", null, null)); - /* - // Rewrite constant word values to constant dword values - synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vw(.)c1(.*)", null, null , "$1vd$2c1$3", null, null)); - synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vw(.)c2(.*)", null, null , "$1vd$2c2$3", null, null)); // Rewrite constant unsigned byte values to constant signed word values synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vbuc1(.*)", null, null , "$1vwsc1$2", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vbuc2(.*)", null, null , "$1vwsc2$2", null, null)); + // Rewrite constant word values to constant dword values + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vw(.)c1(.*)", null, null , "$1vd$2c1$3", null, null)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vw(.)c2(.*)", null, null , "$1vd$2c2$3", null, null)); + + /* + // Rewrite constant unsigned word values to constant signed dword values synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vwuc1(.*)", null, null , "$1vdsc1$2", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vwuc2(.*)", null, null , "$1vdsc2$2", null, null)); - */ - - /* // Rewrite any zeropage pointer as an unsigned word zeropage values synths.add(new AsmFragmentTemplateSynthesisRule("(.*)p..z(.)(.*)", null, null , "$1vwuz$2$3", null, null)); // Rewrite any constant pointer as an constant unsigned word synths.add(new AsmFragmentTemplateSynthesisRule("(.*)p..c(.)(.*)", null, null , "$1vwuc$2$3", null, null)); + */ // Synthesize constants using AA/XX/YY