Commit Graph
100 Commits
Author SHA1 Message Date
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
ISSOtm 55b911654c Get rid of obsoleted function 2020-03-11 01:46:26 +01:00
ISSOtm 7c8eba9fd2 Remove error message causing segfault
This was utterly stupid. The check right above ensured that `sym` was NULL,
ergo that the argument to `yyerror` *would* segfault.

The only two call sites cannot pass a non-NULL pointer anyways, which I'm
betting is why this went unnoticed.
I did what an optimizing compiler would do anyways: remove the dead code.
2020-03-11 00:39:57 +01:00
ISSOtm 23effcc3f0 Fix error messages in sym_GetConstantValue 2020-03-11 00:16:35 +01:00
ISSOtm ea0c5581a5 Prevent deletion of built-in symbols 2020-03-10 23:25:33 +01:00
ISSOtm 2ea329c920 Make symbol creation funcs return ptr to symbol 2020-03-10 16:36:02 +01:00
ISSOtm 3948795d49 Remove deprecated section types 2020-03-10 16:08:09 +01:00
ISSOtm 13e4920122 Get rid of comma token 2020-03-10 16:08:09 +01:00
ISSOtm 88b1121037 Uniformize style in asmy.y 2020-03-10 16:08:02 +01:00
ISSOtm d2a97e934b Remove obsolete instruction forms 2020-03-10 15:50:11 +01:00
ISSOtm cb3997d8c9 Fix org location being undefined when incorrect 2020-03-10 15:37:33 +01:00
ISSOtm c7320a49a9 Deprecate GLOBAL and XDEF
They're basically synonyms for `EXPORT`, and the latter isn't
even documented!
2020-03-10 13:49:55 +01:00
ISSOtm 8d9a896166 Remove deprecated IMPORT symbol
It had a warning that it had no effect for a long while now; removing it so
the name can be re-used
2020-03-10 13:43:15 +01:00
ISSOtm 81a057416f Remove typing for operators that don't need it 2020-03-08 16:26:09 +01:00
ISSOtm 361326e06c Allow inlining of two simple RPN functions 2020-03-07 18:18:57 +01:00
ISSOtm 0d31afaff8 Correct four code style issues 2020-03-07 18:09:00 +01:00
ISSOtm 48ad3973a9 Tell the user about "label"s instead of "relocatable"s
That's the common term, and even the manual uses it.
2020-03-07 18:04:13 +01:00
ISSOtm f6f25296a0 Fix passing constant label to BANK() causing an error 2020-03-07 18:02:06 +01:00
ISSOtm cb62076f8c Use $(MAKE) instead of make in develop 2020-03-06 18:15:32 +01:00
ISSOtm 8034e567f1 Un-silence make checkpatch in CI 2020-03-06 02:32:46 +01:00
ISSOtm 59546c8980 Un-trivialize expression in long RPN expr test 2020-03-05 04:33:43 +01:00
ISSOtm eee0e6adc8 Simplify long-rpn-expression.asm test 2020-02-29 16:39:13 +01:00
ISSOtm fa10ee4356 Deprecate colon-less non-local labels 2020-02-29 16:30:47 +01:00
ISSOtm 5bc8d51a9e Ignore unused arguments in a more standard way 2020-02-29 16:25:54 +01:00
Eldred Habert 361d6cf517 Merge pull request #437 from rednex/locals
Prevent local symbols that are not labels
2020-02-26 02:56:35 +01:00
ISSOtm 6800609fa7 Make RGBLINK check divisions by zero 2020-02-24 17:54:55 +01:00
ISSOtm dac13ba4bb Add string format checking to err.h functions
And fix all problems this detected... oops
2020-02-24 16:58:55 +01:00
ISSOtm 702075eba6 Add forgotten file name argument to err 2020-02-24 16:58:55 +01:00
ISSOtm 3b62bd0bce Bundle GCC runtime in Win32 bin package
After discussing with some Windows user, this actually seems to be
a common thing to do (it seemed weird to me, but I know Windows' handling
of DLLs is weird anyways), so bundle that runtime and reinstate the
full test run for Win32.
2020-02-23 23:14:26 +01:00
ISSOtm 4cc24f4369 Add ds cnt, byte syntax
As suggested by https://github.com/rednex/rgbds/issues/350#issuecomment-498030458
The order `count` then `byte` was decided after some discussion:
- First argument consistent with single-arg syntax
- Intuitive at least to some people other than myself
- Consistent with other assemblers, at least ca65
2020-02-23 22:43:50 +01:00
ISSOtm cfe21876e5 Make writing patches not affect the expression
This also removes one int member from the struct that shouldn't be there
2020-02-23 22:29:01 +01:00
ISSOtm ef2bfe4ea0 Store patch file line in the file name
It's more consistent with how it's stored for all other entries in the stack
2020-02-19 09:51:40 +01:00
ISSOtm 14731c0a1d Use the GitHub-provided base ref for checkpatch testing 2020-02-19 00:56:06 +01:00
ISSOtm 93747af215 Allow overriding the base ref for checkpatch
The default is sane, but not a catch-all.
2020-02-19 00:55:00 +01:00
ISSOtm 76efd26da0 Prevent local symbols that are not labels
Fixes errors brought up in #423
2020-02-19 00:20:58 +01:00
ISSOtm cf2001de5f Allow compiling parser in debug mode with -DYYDEBUG=1 2020-02-19 00:01:51 +01:00
ISSOtm 6d00877231 Prevent infinite loop with line continuations without newlines 2020-02-18 20:58:20 +01:00
ISSOtm 6755a0912b Improve naming of CI build artifacts 2020-02-18 20:23:37 +01:00
ISSOtm b6ac23be3d Remove Travis CI files
Obsoleted by GitHub Actions since #486
2020-02-18 20:12:18 +01:00
ISSOtm e941cafedb Make locals in main scope a non-fatal error 2020-02-18 20:07:44 +01:00
ISSOtm 03fe077b41 Make locals without parent a non-fatal error 2020-02-18 20:07:44 +01:00
Eldred Habert 12ef879860 Merge pull request #486 from ISSOtm/actions
Switch CI to GitHub Actions
2020-02-18 20:04:26 +01:00
ISSOtm 179e047474 Add Windows testing 2020-02-18 02:55:38 +01:00
ISSOtm d497190aa1 Do not zip artifacts ourselves
GitHub does it, this creates zips of zips...
2020-02-17 15:04:14 +01:00
ISSOtm e078c1e793 Use develop in CI when possible 2020-02-17 15:04:14 +01:00
ISSOtm 7471f46a07 Add checkpatch testing 2020-02-17 15:04:14 +01:00
ISSOtm 8cee3c3c3e Upload binaries after compilation 2020-02-17 15:04:14 +01:00
ISSOtm 97bcbf5d84 Add GitHub Actions for regression testing 2020-02-17 15:04:14 +01:00
ISSOtm 3fce9ed9a4 Have Wine shim explicitly require bash
I didn't know the substitution was Bash-only..!
2020-02-17 15:03:46 +01:00
ISSOtm 21ffcc74db Don't use echo -e for creating the Wine shim
Apparently that's not as portable as I expected.
2020-02-17 14:32:35 +01:00
ISSOtm 9e99db9a8e Allow \r in strings
Fixes #484
2020-02-17 13:52:38 +01:00
ISSOtm 5fd38c5f67 Do not try to link libpng statically 2020-02-14 03:07:24 +01:00
ISSOtm 03ed914714 Give reason to why writing the object file fails 2020-02-14 00:29:24 +01:00
ISSOtm 42faffe6f3 Make the Wine shims a separate target 2020-02-13 23:06:05 +01:00
ISSOtm bc80e910ed Fix two code style errors 2020-02-13 20:43:47 +01:00
ISSOtm 30a95d735a Improve testing PC 2020-02-13 20:20:35 +01:00
ISSOtm f01a227470 Fix non-const labels with callbacks having incorrect values when diffed
Basically, this broke PC, which is currently the only label-typed symbol
with a callback.
2020-02-13 20:16:59 +01:00
ISSOtm 91b65c9380 Add include guards and license header to section.h 2020-02-13 15:57:27 +01:00
ISSOtm 18c47843f1 Check if sections referenced in linker script exist 2020-02-12 15:27:07 +01:00
Eldred Habert d5fe377c11 Merge pull request #482 from ISSOtm/conflict
Fix one shift/reduce and one reduce/reduce conflict
2020-02-12 01:39:18 +01:00
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