From 477499b97b251d37eabb61ba9e4c9c80b1360d44 Mon Sep 17 00:00:00 2001 From: Sven Van de Velde Date: Tue, 11 Apr 2023 13:41:14 +0200 Subject: [PATCH] - Fixed #pragma nobank parameter issue. - Optimized logic for #pragma bank. - Updated test cases and references. - Made #pragma NAME parameters optional. - Retested all test cases. --- .../dk/camelot64/kickc/parser/KickCParser.g4 | 4 +- .../Pass0GenerateStatementSequence.java | 13 ++-- src/test/kc/call-banked-phi-case-1-near-0.c | 27 +++++++- src/test/kc/call-banked-phi-case-1-near-1.c | 27 +++++++- src/test/kc/call-banked-phi-case-2-close-0.c | 28 +++++++- src/test/kc/call-banked-phi-case-2-close-1.c | 30 ++++++++- src/test/kc/call-banked-phi-case-3-near-0.c | 28 +++++++- src/test/kc/call-banked-phi-case-3-near-1.c | 30 ++++++++- src/test/kc/call-banked-phi-case-4-near-0.c | 28 +++++++- src/test/kc/call-banked-phi-case-4-near-1.c | 30 ++++++++- src/test/kc/call-banked-phi-case-5-far-0.c | 28 +++++++- src/test/kc/call-banked-phi-case-5-far-1.c | 30 ++++++++- src/test/kc/call-banked-phi-case-6-close-0.c | 28 +++++++- src/test/kc/call-banked-phi-case-6-close-1.c | 30 ++++++++- .../kc/call-banked-stack-case-2-close-0.c | 29 +++++++- src/test/kc/call-banked-stack-case-5-far-0.c | 29 +++++++- .../kc/examples/cx16/banking/cx16-banking.c | 2 +- .../ref/call-banked-phi-case-1-near-0.asm | 27 +++++++- .../ref/call-banked-phi-case-1-near-0.log | 54 ++++++++++++++- .../ref/call-banked-phi-case-1-near-1.asm | 27 +++++++- .../ref/call-banked-phi-case-1-near-1.log | 54 ++++++++++++++- .../ref/call-banked-phi-case-2-close-0.asm | 28 +++++++- .../ref/call-banked-phi-case-2-close-0.log | 56 +++++++++++++++- .../ref/call-banked-phi-case-2-close-1.asm | 28 +++++++- .../ref/call-banked-phi-case-2-close-1.log | 56 +++++++++++++++- .../ref/call-banked-phi-case-3-near-0.asm | 28 +++++++- .../ref/call-banked-phi-case-3-near-0.log | 56 +++++++++++++++- .../ref/call-banked-phi-case-3-near-1.asm | 28 +++++++- .../ref/call-banked-phi-case-3-near-1.cfg | 2 +- .../ref/call-banked-phi-case-3-near-1.log | 66 +++++++++++++++++-- .../ref/call-banked-phi-case-3-near-1.sym | 2 +- .../ref/call-banked-phi-case-4-near-0.asm | 28 +++++++- .../ref/call-banked-phi-case-4-near-0.log | 56 +++++++++++++++- .../ref/call-banked-phi-case-4-near-1.asm | 28 +++++++- .../ref/call-banked-phi-case-4-near-1.log | 56 +++++++++++++++- src/test/ref/call-banked-phi-case-5-far-0.asm | 28 +++++++- src/test/ref/call-banked-phi-case-5-far-0.log | 56 +++++++++++++++- src/test/ref/call-banked-phi-case-5-far-1.asm | 28 +++++++- src/test/ref/call-banked-phi-case-5-far-1.log | 56 +++++++++++++++- .../ref/call-banked-phi-case-6-close-0.asm | 28 +++++++- .../ref/call-banked-phi-case-6-close-0.log | 56 +++++++++++++++- .../ref/call-banked-phi-case-6-close-1.asm | 28 +++++++- .../ref/call-banked-phi-case-6-close-1.log | 56 +++++++++++++++- 43 files changed, 1363 insertions(+), 74 deletions(-) diff --git a/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4 b/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4 index 50b509cdf..0bfba0d7d 100644 --- a/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4 +++ b/src/main/antlr4/dk/camelot64/kickc/parser/KickCParser.g4 @@ -137,7 +137,7 @@ parameterDecl pragma : PRAGMA NAME - | PRAGMA NAME PAR_BEGIN pragmaParam (COMMA pragmaParam)* PAR_END + | PRAGMA NAME (PAR_BEGIN pragmaParam (COMMA pragmaParam)* PAR_END)? ; pragmaParam @@ -162,7 +162,7 @@ directive | EXTERN #directiveExtern | EXPORT #directiveExport | INLINE #directiveInline - | BANK PAR_BEGIN NAME COMMA NUMBER (COMMA NAME COMMA NAME COMMA NAME)? PAR_END #directiveBank + | BANK PAR_BEGIN NAME COMMA NUMBER PAR_END #directiveBank | INTRINSIC #directiveIntrinsic | INTERRUPT ( PAR_BEGIN NAME PAR_END )? #directiveInterrupt | LOCAL_RESERVE PAR_BEGIN pragmaParam ( COMMA pragmaParam )* PAR_END #directiveReserveZp diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java index d0d81fcd1..d9c69061c 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java @@ -296,20 +296,15 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor