From f1f70d250ac9d065e53aa224509c81fd7f2dcbf0 Mon Sep 17 00:00:00 2001 From: ISSOtm Date: Thu, 9 Jan 2020 06:10:28 +0100 Subject: [PATCH] Add test for `DEF(@)` --- src/asm/symbol.c | 8 +++++++- test/asm/pc-def.asm | 5 +++++ test/asm/pc-def.err | 2 ++ test/asm/pc-def.out | 0 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 test/asm/pc-def.asm create mode 100644 test/asm/pc-def.err create mode 100644 test/asm/pc-def.out diff --git a/src/asm/symbol.c b/src/asm/symbol.c index 22d35b4d..aa8ae4b3 100644 --- a/src/asm/symbol.c +++ b/src/asm/symbol.c @@ -314,7 +314,13 @@ uint32_t sym_GetConstantValue(char *s) { struct sSymbol *psym = sym_FindSymbol(s); - if (psym != NULL) { + if (psym == pPCSymbol) { + if (pCurrentSection->nOrg == -1) + yyerror("Expected constant PC but section is not fixed"); + else + return pPCSymbol->nValue; + + } else if (psym != NULL) { if (psym->nType & SYMF_CONST) return getvaluefield(psym); diff --git a/test/asm/pc-def.asm b/test/asm/pc-def.asm new file mode 100644 index 00000000..f7846986 --- /dev/null +++ b/test/asm/pc-def.asm @@ -0,0 +1,5 @@ +IF DEF(@) + PRINTT "defined\n" +ELSE + PRINTT "not defined\n" +ENDC diff --git a/test/asm/pc-def.err b/test/asm/pc-def.err new file mode 100644 index 00000000..c0288fa1 --- /dev/null +++ b/test/asm/pc-def.err @@ -0,0 +1,2 @@ +ERROR: pc-def.asm(1): + '@' is not allowed as argument to the DEF function diff --git a/test/asm/pc-def.out b/test/asm/pc-def.out new file mode 100644 index 00000000..e69de29b