Rangi
dd892d61d8
Correct rgbasm(5) about whitespace before labels
...
Also rephrase some more label-related documentation
2021-02-23 15:31:29 -05:00
Rangi
a09f2d4115
Test an indented macro label
2021-02-23 14:48:27 -05:00
Eldred Habert
dafef5a953
Remove column 1 restriction for labels with colons ( #635 )
...
Partial fix for #457
2021-02-23 14:42:24 -05:00
dannye
929e2a4490
rgbasm: Report conflicting file/line number for duplicate sections
2021-02-23 20:08:59 +01:00
dannye
cc1129093d
Add duplicate-section test
2021-02-23 20:08:59 +01:00
ISSOtm
72911ada2d
Prevent non-numeric symbol from overriding refs
...
Fixes #751
2021-02-22 13:00:25 +01:00
Rangi
037bc7abb3
Add an rgblink test case for an $8000-byte ROM0 section with -t
2021-02-21 16:30:02 -05:00
Rangi
5fd636ac4b
Implement floored / and divisor-sign % operators ( #745 )
...
Fixes #703
2021-02-21 16:14:44 -05:00
Rangi
a6d844a9a5
Add more test cases for IF, REPT, and MACRO ( #748 )
2021-02-19 19:34:21 -05:00
ISSOtm
bee62076c6
Allow ENDC at EOF without a newline
2021-02-20 00:51:33 +01:00
ISSOtm
cd072d5e6a
Add assertion check for potential UAF trigger
...
It actually currently triggers if an INCLUDE directive is given at EOF,
but #742 will fix that.
2021-02-19 16:53:30 +01:00
ISSOtm
6ef3ee1391
Give void* ptr to %p formatter
...
Silences a format type mismatch warning
2021-02-19 16:53:26 +01:00
ISSOtm
c29b616f93
Fix forgotten initialization of lexerState->isReferenced
2021-02-18 16:33:06 +01:00
Rangi
39c179aa32
Fix missing newline in a dbgPrint
2021-02-17 13:14:02 -05:00
Rangi
5c1ae4ce22
Shorter quine test cases
2021-02-17 11:51:21 -05:00
Rangi
efbfeca292
Avoid two peek(1) calls when lexing """multi-line strings"""
2021-02-17 10:36:36 -05:00
Rangi
7dd34f1572
Format INT32_MIN as '-2147483648', not '--2147483648'
2021-02-17 09:48:40 -05:00
Rangi
748e7dd4c7
Fix calculation of 2**30
...
In exponent(), 'base *= base;' should not run
when base is 65536, since it overflows an int32_t.
This also optimizes exponent() based on
gcc and clang -O3 test cases in godbolt.org.
2021-02-17 09:25:02 -05:00
Rangi
d049ffc0f0
Handle string literals within macro arguments ( #685 )
...
Fixes #683 and #691
The lexer's raw mode for reading macro args already attempted
to handle semicolons inside string literals, versus outside ones
which start comments. This change reuses the same function for
reading string literals in normal and raw modes, also handling:
- Commas in strings versus between macro args
- Character escapes
- {Interpolations} and \1-\9 args inside vs. outside strings
- Multi-line string literals
Macro args now allow escaping '\', '"', and '\\'.
A consistent model for expanding macro args and interpolations,
within macro args, string literals, and normal context:
- "{S}" should always equal the contents of S
- "\1" should always act like quoting the value of \1
2021-02-16 22:44:25 -05:00
Rangi
8c0275480c
Allow ds to take multiple values to repeat for a count ( #725 )
...
Fixes #722
2021-02-16 22:01:23 -05:00
Rangi
76d6ef8695
Implement LOAD UNION and LOAD FRAGMENT
...
Fix #632
2021-02-17 03:42:06 +01:00
Rangi
c67a696a87
Use macros to convert between radians and fixed-point 65536ths
2021-02-16 18:07:05 -05:00
Rangi
ee20d9010e
Make @ relative to the start of a ds even at link time
...
Fix #737
2021-02-16 22:47:07 +01:00
Rangi
2bc12447e2
Update rgbds(5) object file format documentation ( #740 )
2021-02-16 16:36:37 -05:00
Rangi
cb61da8842
-Wmacro-shift warns about shifting macro arguments too far ( #741 )
...
Fixes #735
2021-02-16 16:31:01 -05:00
ISSOtm
122ba6eba5
Update deprecated feature examples
...
Those have been removed, lol
2021-02-16 22:09:31 +01:00
Rangi
dddff0f450
Cannot start a new section that's already on the stack
...
This is only relevant for FRAGMENT or UNION sections, since
normal ones would fail with "Section already defined previously".
Fixes #730
2021-02-16 21:51:48 +01:00
Antonio Vivace
a919f922a1
Add FUNDING.yml to show the Sponsor button on the repository
2021-02-16 21:23:27 +01:00
Rangi
8f20620c16
Allow shifting macro arguments by a negative amount
...
Fixes #733
2021-02-14 16:21:00 +01:00
Rangi
96bce05be2
Newlines in multi-line strings update the line number
...
This affects error and warning messages, and dbgPrint
2021-02-14 16:16:52 +01:00
Rangi
fc2bf3d11d
Prefer sizeof($$) to MAXSTRLEN + 1
...
This makes `strsubUTF8` similar to `strrpl` and `strfmt`
2021-02-14 16:16:52 +01:00
Rangi
8415ce3ed0
Correct the keywordDict size
...
The stale keywords XDEF and GLOBAL were removed,
so there can be fewer keyword nodes.
2021-02-14 16:16:52 +01:00
Rangi
ebb5aab6db
Correct some comments
...
nPCOffset no longer exists, and the lexer only
returns T_NEWLINE for EOF in raw mode.
2021-02-14 16:16:52 +01:00
Rangi
464a3a4892
Separate extern getopt implementation from the unistd.h one
...
Fixes #710
2021-02-12 00:29:21 +01:00
ISSOtm
88e1cc7302
Make EOF token name consistent across Bison versions
...
The "end of file" name apparently only became a default recently
2021-02-11 13:04:43 +01:00
ISSOtm
b3c0db218d
Remove "EOF-newline" lexer hack
...
In preparation for an upcoming change
Makes for nicer error messages, complaining about EOF instead of newlines
The hack had to be kept for the lexer raw mode to avoid a bug;
see the relevant code comment for more info.
2021-02-11 12:48:37 +01:00
ISSOtm
76446e6d00
Change behavior of merging FRAGMENTs to constrain each fragment individually
...
Additionally, remove the deprecated merging of non-fragment SECTIONs
2021-02-10 10:19:16 +01:00
ISSOtm
6623b1dc45
Fix CI on macOS
...
Apple supplies version 2.3 (from 2006!!), which doesn't support `%empty`.
2021-01-23 13:45:12 +01:00
ISSOtm
70bbb098d3
Remove stale keywords
...
They were removed from the grammar, but not the lexer
2021-01-23 00:05:56 +01:00
ISSOtm
1926065377
Enable Bison warnings
...
-Wall should be old enough.
Also use %empty instead of comments
2021-01-23 00:05:56 +01:00
Rangi
e3d355d976
Attempt to recover from syntax errors with bison
...
Fixes #595
2021-01-22 15:54:24 +01:00
ISSOtm
a679e02246
Get rid of asm.h and localasm.h
...
No need to make them global
2021-01-22 13:34:16 +01:00
ISSOtm
592e9b3725
Reorganize and comment better main()
2021-01-22 11:09:27 +01:00
ISSOtm
effc58241d
Rework defining variables on command-line
...
Avoids allocating memory
Detects CLI errors even when failing to open file
Reports symbols as defined on command-line instead of input line 0 (!?)
2021-01-22 11:03:43 +01:00
ISSOtm
3697065afc
Add asm/opt.c to CMakeLists
...
Fixes compiling with CMake
2021-01-22 11:01:33 +01:00
ISSOtm
fa0fa4d5ac
Significantly overhaul OPT code
...
Simplify the mess that was option setting (2 redundant variables !?)
Move options to a separate file
Have "modules" own their options, and OPT only access them (less redundancy)
Simplify code, respect naming conventions better
2021-01-22 10:41:09 +01:00
ISSOtm
5acc48fa54
Error out when given several input files
...
Also rename tzMainFile
2021-01-22 09:44:41 +01:00
ISSOtm
1487eebe79
Remove time counter
...
Nobody uses that, and it requires running extra code for each line
2021-01-22 08:51:57 +01:00
ISSOtm
993c034039
Avoid using EXPAND_AND_STR with external defines
...
There is no guarantee that they are purely numeric, use the values instead
2021-01-22 08:51:35 +01:00
ISSOtm
09f16bda4a
Use putc instead of fputc
...
Also rename some functions for consistency
2021-01-22 08:32:28 +01:00