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
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
ISSOtm
579a324ce7
Fix diffing bin files in RGBASM tests
2020-02-09 13:58:47 +01:00
ISSOtm
7903c14993
Fix undefined behavior when reading constant in RGBLINK
2020-02-07 14:51:26 +01:00
ISSOtm
b42a04c24e
Add test for jr @
...
Fun fact: current build *fails* this test!
2020-02-07 13:19:50 +01:00
ISSOtm
ea52e45335
Fix @
...
The symbol's evaluation by the assembler and linker was very inconsistent
2020-02-07 13:19:50 +01:00
ISSOtm
9687e6e1dd
Allow forcing the second byte of STOP
...
Fixes #433
2020-02-07 10:06:02 +01:00
ISSOtm
ee34200e5f
Output diffs when binary tests fail
2020-02-06 15:36:15 +01:00
ISSOtm
295fc6c619
Improve coverage of db-@ test
2020-02-05 13:24:50 +01:00
ISSOtm
28473d314a
Make implicit truncation a warning
2020-02-05 13:20:51 +01:00
ISSOtm
35f7340dc9
Report failing test names in RGBLINK as well
2020-02-04 01:41:35 +01:00
Eldred Habert
b76567e7d1
Merge pull request #470 from ISSOtm/rst
...
Allow using labels as argument to `rst`
2020-02-04 01:26:06 +01:00
ISSOtm
652db60ad6
Document modifications made to object file format
2020-02-03 21:10:05 +01:00
ISSOtm
a7cb0a166a
Inline readRGBxObject
...
This was made separate with the intention of supporting multiple versions,
but after some discussion this was decided against, so better improve
readability instead.
2020-02-03 21:10:05 +01:00
ISSOtm
f363541611
Introduce revision number field
2020-02-03 21:10:05 +01:00
ISSOtm
fa1fba7fd9
Increase object version to RGB9
2020-02-03 21:07:46 +01:00
ISSOtm
d73fa09774
Remove RGB6 parsing
2020-02-03 21:07:12 +01:00