ISSOtm
112098514d
Fix 1 s/r and 1 r/r conflict
...
Implements the fix suggested [here](https://github.com/rednex/rgbds/issues/44#issuecomment-69360499 ), which performed better than expected!
I'm not \*too\* fond of this but this seems like the right way
2020-02-11 18:59:55 +01:00
ISSOtm
31aa1ea474
Improve arg-shift test
...
New test case courtesy of @aaaaaa123456789
2020-02-11 11:38:57 +01:00
ISSOtm
96b6e4a76e
Add forgotten semicolon in grammar
2020-02-11 11:36:50 +01:00
ISSOtm
001b95d12a
Add SHIFT with numeric argument
...
Fixes #442 .
2020-02-11 11:25:38 +01:00
ISSOtm
3b2c862320
Make more RGBASM errors print their line number
...
Fixes #379 .
2020-02-11 09:35:19 +01:00
ISSOtm
230f849229
Fix error output slightly broken on Windows
...
Apparently, `perror` on Windows forces a newline before itself, which is
not the behavior intended. Instead, print the error message inline.
2020-02-11 09:06:38 +01:00
Eldred Habert
c37253fe5a
Merge pull request #480 from ISSOtm/section
...
Improve section management
2020-02-11 08:51:00 +01:00
Eldred Habert
0ed8d3859d
Merge pull request #481 from rednex/revert-451-atomic_output
...
Revert "Make RGBASM overwrite output files atomically"
2020-02-11 08:32:27 +01:00
ISSOtm
6963d77f8a
Add documentation for LOAD blocks
2020-02-10 09:30:33 +01:00
ISSOtm
02ea52f453
Add test for LOAD
2020-02-10 03:39:09 +01:00
ISSOtm
cdabc057a0
Allow unseekable files with INCBIN
...
Go figure the use case, but the feature is there now
2020-02-10 03:39:09 +01:00
ISSOtm
eb0d75711a
Implement LOAD/ENDL blocks
...
Basically implements and closes rednex#274.
2020-02-10 03:39:09 +01:00
ISSOtm
f121119283
Use section's offset instead of general one
...
That's more future-proof and makes more sense
2020-02-10 03:37:44 +01:00
ISSOtm
d9c1b66931
Deduplicate value output function code
2020-02-10 03:37:43 +01:00
ISSOtm
2f60e0a59e
Use meaningful types for byte output functions
2020-02-10 03:36:51 +01:00
ISSOtm
ffe9e92b48
Skip double-checking overflow in byte output
2020-02-10 03:36:51 +01:00
ISSOtm
aa90a53f34
Move 1-byte overflow check to out_AbsByte
...
This check is already performed in bulk by all functions calling it except
`out_AbsByte`, adding extra overhead to those.
2020-02-10 03:36:51 +01:00
ISSOtm
598c923506
Use callback for PC's value
...
This causes it to auto-update whenever the current section's attributes are
updated, simplifying the code and eliminating redundancy.
This should also overall reduce overhead (one extra function call on each
PC evaluation, but less bookkeeping for each byte output)
2020-02-10 03:36:51 +01:00
ISSOtm
8c4b473d6f
Add more checks to section creation in RGBASM
...
Fixes rednex#471, but also backports a couple more checks from RGBLINK
2020-02-10 03:35:55 +01:00
ISSOtm
a4fe274c25
Unify all section declarations
2020-02-10 03:35:55 +01:00
ISSOtm
34597ce6a0
Mark some section functions as const
2020-02-10 03:34:58 +01:00
ISSOtm
4a2af807b2
Remove legacy forward declaration
2020-02-10 03:34:58 +01:00
ISSOtm
d0ec35628f
Split section management into its own file
2020-02-10 03:34:58 +01:00
ISSOtm
bfdbd00092
Do some misc cleanup of output.c
2020-02-10 03:25:03 +01:00
ISSOtm
d0278d8663
Invert logic for section max sizes
...
Prep for the next commit
2020-02-10 03:25:03 +01:00
Eldred Habert
632bc2aaec
Merge pull request #476 from ISSOtm/expr_cleanup
...
Clean up expression evaluation
2020-02-10 03:10:05 +01:00
Eldred Habert
1ca59f25d0
Revert "Make RGBASM overwrite output files atomically"
2020-02-10 03:08:27 +01:00
Eldred Habert
1d0c8fa113
Merge pull request #451 from rednex/atomic_output
...
Make RGBASM overwrite output files atomically
2020-02-10 03:08:14 +01:00
ISSOtm
1d70c989be
Test one more label diff case
2020-02-10 02:55:51 +01:00
ISSOtm
818a0d0296
Test more cases in label-diff test
2020-02-10 02:51:48 +01:00
ISSOtm
ab1eb146c9
Print special message when PC is not constant
2020-02-10 02:51:48 +01:00
ISSOtm
63054ae0fd
Make more functions ignore the RPN buffer when constant
2020-02-10 02:51:48 +01:00
ISSOtm
155040240d
Improve error message when a symbol's value is not constant
2020-02-10 02:51:48 +01:00
ISSOtm
d466cab1e8
Init RPN expressions created by binary operators
2020-02-10 02:51:48 +01:00
ISSOtm
4e8b34f42e
Improve error message when a symbol is not constant
2020-02-10 02:51:48 +01:00
ISSOtm
5014f55c48
Treat PC as a symbol as well
2020-02-10 02:51:48 +01:00
ISSOtm
1d78cd0f03
Axe the constexpr expression evaluator
...
This avoids redundancy between them (and also having to port fixes and features)
The error messages have been preserved through a string reporting mechanism
2020-02-10 02:51:48 +01:00
ISSOtm
52d62c6b21
Handle subtractions between labels
2020-02-10 02:47:50 +01:00
ISSOtm
b4a73f33ce
Avoid undefined behavior when shifting in RPN math
2020-02-10 02:47:50 +01:00
ISSOtm
f9c25608e9
Ignore RPN strings when their value is known
2020-02-10 02:47:50 +01:00
ISSOtm
9fb9e63554
Reserve space for RPN expressions in a single call
...
This should mean less overhead with some commands
2020-02-10 02:47:12 +01:00
ISSOtm
9ce8a9f5f0
Add comments to RPN expr struct
2020-02-10 02:47:12 +01:00
ISSOtm
cc59730c5b
Cleanup the RPN evaluator somewhat
...
Make the bool field an actual bool
Rename `iReloc` to a more exact `isKnown` (as was already pointed out by some
comments)
Make the value of `BANK(symbol)` consistent when the argument is invalid
2020-02-10 02:47:12 +01:00
ISSOtm
0a04904b75
Refactor RPN binary expressions into a single func
...
This mirrors what the constexpr evaluator is doing, and removes a lot of code shared
between all of them
2020-02-10 02:47:12 +01:00
ISSOtm
9ed6e9af65
Make = a separate token from SET
...
This does break backwards compat, but if anyone complains I'm gonna be mad
2020-02-10 00:49:45 +01:00
ISSOtm
c424a9bf5a
Only output a single error with charmaps
2020-02-09 22:15:43 +01:00
ISSOtm
9d811e1267
Warn when truncating values in charmap
2020-02-09 22:13:16 +01:00
ISSOtm
af6f62701c
Remove ambiguous charmap syntax
...
The syntax was `charmap "anything", "string"`; the second string was
already handled by `const`, but to the same effect... the ambiguous
declaration has been removed, leaving us at "only" two reduce/reduce
conflicts.
2020-02-09 22:03:11 +01:00
ISSOtm
299574221e
Truncate shift.out.bin
...
Too large a size makes diff output (when tests fail) annoying
2020-02-09 19:51:47 +01:00
ISSOtm
fe0c269382
Use ++ and -- instead of [+-]= 1
...
Seriously...
2020-02-09 15:21:08 +01:00