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