Commit Graph

1108 Commits

Author SHA1 Message Date
ISSOtm ed4a613473 Rename productions to "reloc" when not really constant 2020-02-11 19:04:35 +01:00
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