ISSOtm
c0aff678e9
Improve arg-shift test
2020-03-29 12:34:13 +02:00
ISSOtm
a3d8836671
Prevent assertions outside sections from crashing
2020-03-29 12:18:24 +02:00
ISSOtm
db1eb8fbcb
Revert "Prevent RGBASM from outputting corrupted files"
...
This reverts commit 06fe27c516 .
According to Microsoft's documentation
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tmpfile?view=vs-2019
`tmpfile` attempts to create the temporary file at the **root** folder
This seems to assume that the user has admin rights; might be a compat
thing, idk, but it breaks on people's computers.
(CI didn't catch it, annoyingly.)
Reverting to make RGBASM usable on most Windows computers.
(Sanely-configured ones, at least.)
Another solution to #446 needs to be figured out, yay...
2020-03-27 23:36:11 +01:00
ISSOtm
95f347dc6a
Evaluate assertions after placing sections
2020-03-27 20:00:29 +01:00
ISSOtm
6579120d9e
Simplify symbol-writing logic
2020-03-27 12:32:14 +01:00
ISSOtm
84cd9f2db9
Fix segfaults when using PC outside a section
2020-03-27 12:30:09 +01:00
ISSOtm
06fe27c516
Prevent RGBASM from outputting corrupted files
...
Properly fixes #451
2020-03-27 11:19:02 +01:00
ISSOtm
187f88aa50
Only copy necessary characters for bare labels
2020-03-26 23:10:51 +01:00
ISSOtm
caddd61f17
Remove "column 1" restriction for local labels
...
Because a local symbol is necessarily a label, the disambiguation
is not necessary. This is a first step towards fixing #457 .
2020-03-26 22:36:40 +01:00
ISSOtm
29629245a4
Use new hashmap implementation for symbols
2020-03-24 12:50:53 +01:00
ISSOtm
666b9f8f7b
Add tests for purging symbols
2020-03-24 10:52:45 +01:00
ISSOtm
7deb8d3e8a
Allow purging exported symbols
2020-03-24 10:52:02 +01:00
ISSOtm
cb0a882a31
Order warnings alphabetically
2020-03-23 16:03:36 +01:00
ISSOtm
df2c0dc2f9
Check for unsatisfiable alignment constraints
...
Fixes #493
2020-03-22 11:54:57 +01:00
ISSOtm
062fa5392b
Still override alignment even if not satisfied
2020-03-22 11:52:31 +01:00
Eldred Habert
baeec2315f
Merge pull request #495 from ISSOtm/sectunion
...
Implement unionized sections
2020-03-22 11:21:24 +01:00
ISSOtm
92134d7684
Add testing for assertions inside unionized sections
2020-03-22 11:14:04 +01:00
ISSOtm
4877bb783c
Add more tests for unionized sections + fix bugs
...
Implementing those tests found a few bugs... oops
2020-03-22 11:14:04 +01:00
ISSOtm
275b8e15ff
Document modification to object file format
2020-03-22 11:14:04 +01:00
ISSOtm
e123b6dec7
Implement unionized sections in RGBLINK
2020-03-22 11:13:39 +01:00
ISSOtm
cb52ae0f26
Implement unionized sections in RGBASM
...
This touched a lot more code than initially expected, for two reasons.
First, this broke a big RGBASM assumption: that sections are always being
written to at their end. This plus other problems required touching
basically the entirety of `section.c`.
Second, I tried different solutions to solve the above problem, and along
the way I cleaned up many things around. (I believe that keeping this to
"cleanup" commits yields subpar results, and since it's boring they get
postponed anyways.)
RGBLINK support still needs to be added, but this will come next.
2020-03-22 11:06:17 +01:00
ISSOtm
46a402f7d7
Prevent passing assertions that RGBASM passed to RGBLINK
2020-03-22 10:46:37 +01:00
ISSOtm
e233c5d256
Don't drop RGBLINK output in RGBASM tests
2020-03-22 10:43:06 +01:00
Eldred Habert
fe824e0068
Merge pull request #490 from ISSOtm/const
...
Implement `ISCONST`, reporting compile-time constness
2020-03-21 23:20:01 +01:00
Eldred Habert
66512ed8d2
Merge pull request #488 from rednex/assert
...
Add assertions
2020-03-21 23:06:44 +01:00
ISSOtm
fb58166e5d
Add assertions
...
Closes #292
2020-03-21 23:00:38 +01:00
ISSOtm
03967bd623
Prevent purging referenced symbols
...
This is an immediate fix for #492 , although #342 is needed to implement the
desired functionality.
2020-03-21 15:42:52 +01:00
ISSOtm
eb445271df
Remove carryover from RGBASM in RGBLINK tests
2020-03-20 21:50:38 +01:00
ISSOtm
af22cf182b
Simplify out_PCRelByte by using PC
2020-03-20 20:22:19 +01:00
ISSOtm
5a0fcda4c8
Prevent POPS within LOAD blocks
2020-03-20 18:57:37 +01:00
ISSOtm
29623c4146
Test generating direct bytes in LOAD blocks
2020-03-20 18:29:15 +01:00
ISSOtm
ebda8255ff
Improve LOAD test to also test patches inside LOAD section
2020-03-20 18:20:20 +01:00
ISSOtm
deb91f679d
Reset symbol scope on every section change
2020-03-20 17:59:47 +01:00
ISSOtm
fb5e768142
Prevent using LOAD blocks outide code sections
2020-03-20 16:37:10 +01:00
ISSOtm
ecf44c784c
Reject including directories
2020-03-20 01:24:53 +01:00
ISSOtm
5bca1172ff
Fix section continuation when only one bank exists
2020-03-19 23:07:07 +01:00
ISSOtm
136446fccb
Improve checking of RST and LDH values at assembly time
2020-03-15 15:23:39 +01:00
ISSOtm
49bca8d588
Fix misnamed hashmap function
2020-03-15 15:23:39 +01:00
ISSOtm
7ddbe44b21
Use hashmap system for charmap
2020-03-15 15:23:32 +01:00
ISSOtm
af60e7f74a
Allow charmap creation even if its base doesn't exist
2020-03-15 00:40:45 +01:00
ISSOtm
2f16e82cf7
Improve PC offset management
...
Basically make it always point to the instruction's first byte.
This was the behavior all whom I asked to intuitively expected.
2020-03-15 00:18:10 +01:00
ISSOtm
7b54312d97
Deprecate OPT z in favor of OPT p
...
Fixes #298
2020-03-14 17:09:15 +01:00
ISSOtm
5b98beec8b
Use left recursion instead of right
...
> Any kind of sequence can be defined using either left recursion or right
> recursion, but you should always use left recursion, because it can
> parse a sequence of any number of elements with bounded stack space.
https://www.gnu.org/software/bison/manual/html_node/Recursion.html
2020-03-14 16:22:33 +01:00
ISSOtm
6662c86d5e
Define 3-bit value when invalid
2020-03-14 16:17:30 +01:00
ISSOtm
2f466c2939
Revamp macro arg system
...
This should significantly improve performance: on pokecrystal builds, perf
reported as much CPU time spent on `yyparse` as on `sym_UseNewMacroArgs`
Measurements show ~6 seconds of improvement on that codebase.
This also fixes #321 , as a bonus, due to saner management!
2020-03-14 16:13:40 +01:00
ISSOtm
61897d8b52
Fix warning.h not including a required header
2020-03-14 11:33:51 +01:00
ISSOtm
a259f53b52
Rename macro functions with proper prefix
2020-03-13 23:20:27 +01:00
ISSOtm
ffdb1fbfe5
Split macro arg management into its own file
...
It has no relation to symbols, and helps a tiny bit deflate `symbol.c`
2020-03-11 02:39:36 +01:00
ISSOtm
4b33b4b387
Remove forward decl of nonexistent function
...
I can only assume it was for debugging? (No, I'm not looking it
up the history)
2020-03-11 02:21:30 +01:00
ISSOtm
8fcdcb1731
Implement ISCONST, reporting compile-time constness
2020-03-11 02:15:31 +01:00