Commit Graph
100 Commits
Author SHA1 Message Date
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 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
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