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
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
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
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
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
fe0c269382
Use ++ and -- instead of [+-]= 1
...
Seriously...
2020-02-09 15:21:08 +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
28473d314a
Make implicit truncation a warning
2020-02-05 13:20:51 +01:00
ISSOtm
f363541611
Introduce revision number field
2020-02-03 21:10:05 +01:00
ISSOtm
b1cd730db2
Add link-time RST instruction
...
This allows using a label as the argument to a `rst` instruction
Fixes rednex#448
2020-02-03 21:07:12 +01:00
ISSOtm
d15915ef14
Simplify bankrangecheck
2020-02-03 15:36:38 +01:00
ISSOtm
24f41ef897
Expose link def arrays to RGBASM
2020-02-03 15:19:48 +01:00
ISSOtm
09dff85d5b
Merge common.h into linkdefs.h
2020-02-03 14:50:00 +01:00
Eldred Habert
20e5685c1a
Merge pull request #424 from ISSOtm/better_deps
...
Improve dependency generation
2020-02-03 03:50:09 +01:00
Eldred Habert
ac6232bc87
Merge pull request #473 from ISSOtm/shift_ub
...
Remove undefined behavior from shifts
2020-02-03 03:49:38 +01:00
ISSOtm
ed72baca2a
Make more symbol functions const
...
Can't hurt to specify those as they are now. Perhaps it'll enable slightly more
compiler optimizations, too?
2020-01-30 02:38:33 +01:00
ISSOtm
edb562d2e5
Mark a few symbol functions as static
2020-01-30 02:19:36 +01:00
ISSOtm
6d4b128611
Avoid unnecessary copies in symbol init
2020-01-30 02:15:43 +01:00
ISSOtm
e2e01e84fa
Fall back from failure in time a bit better
2020-01-30 02:07:55 +01:00
ISSOtm
93ee417567
Fix timestamp symbols on Windows (partially)
...
Windows does not honor `%F` nor `%T` in `strftime`. These are worked around
by writing the full format they serve as a short for.
However, Windows also treats `%z` and `%Z` identically, where SUS instead
requires `%z` to output a ±XXXX offset.
Since the current information is broken (no information), this isn't *breaking*
anything, but at least provides something a human will probably understand.
`__ISO_8601_UTC__` is unaffected because it hardcodes the timezone character,
only `__ISO_8601_LOCAL__` suffers from this.
2020-01-30 01:47:50 +01:00
ISSOtm
b11d121c48
Remove undefined behavior from shifts
...
`asl` and `asr` in `src/link/patch.c` courtesy of @pinobatch, and rearranged in RGBASM
evaluators.
2020-01-28 12:37:38 +01:00
ISSOtm
2e8094b712
Allow RGBASM to overwrite object files on Windows
2020-01-28 11:08:16 +01:00
ISSOtm
a9cb4f8245
Make RGBASM overwrite output files atomically
...
Fixes rednex/#446.
I am not sure this is the best (in cases where the target directory
is not writable but the target file is), but maybe this can be
toggled via a flag, for example.
2020-01-28 11:08:16 +01:00
ISSOtm
7bb55469fe
Fix partial paths being output to dep files with -i
2020-01-26 15:33:36 +01:00
ISSOtm
a29dd738f2
Reimplement -M variants using long options
2020-01-26 15:33:36 +01:00
ISSOtm
4a98b41d57
Fix -MG always being enabled
2020-01-26 15:33:36 +01:00
ISSOtm
6fc5097278
Allow outputting dep files to stdout using -
2020-01-26 15:33:36 +01:00
ISSOtm
12f2f654dd
Add -MG
...
This option allows for automatic dependency detection and generation:
as soon as a missing file is found, it is output to the dep file, and
assembly immediately aborts. (No .o file is produced, even if `-o` was
speicified.) This doesn't cause an error, either; the point is that once
the file is added to the dep file, the Makefile is re-parsed, and this
time the file will be generated, so the dep list builds up automatically.
This mimicks GCC's option and behavior.
2020-01-26 15:33:36 +01:00
ISSOtm
0649b360fb
Allow specifying multiple dependency targets
...
This is done to match GCC's behavior.
Also, this unifies the code of -MT and -MQ.
2020-01-26 15:32:45 +01:00
ISSOtm
f1f314270d
Add -MQ
...
Just like GCC's -MQ, this is basically -MT but the file name is escaped.
2020-01-26 15:32:45 +01:00