1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-06-12 22:29:33 +00:00
Commit Graph

972 Commits

Author SHA1 Message Date
Karol Stasiak
cba145d674 Better error messages for variable definitions in macros (#77) 2020-12-01 03:19:38 +01:00
Karol Stasiak
f2f53a4b28 Configurable entry point for ZX Spectrum, Z1013, TRS-80 and CoCo (#78) 2020-11-19 18:47:50 +01:00
Karol Stasiak
7e45967b0c Allow emitting addresses of labels in the output (#78) 2020-11-19 18:33:51 +01:00
Karol Stasiak
c8e32a876f Fix endaddr+N output 2020-11-19 18:21:08 +01:00
Karol Stasiak
b2d2c3e005 Don't emit labels that are not necessary; fix the __heap_start symbol. 2020-11-18 23:08:45 +01:00
Karol Stasiak
dc087ed887 Better error messages for arays without sizes 2020-11-18 23:08:09 +01:00
Karol Stasiak
97c7d0ffed Basic groundwork for optimization hint support 2020-11-18 22:37:58 +01:00
Karol Stasiak
385b2fd40b Fix function pointers (fixes #86) 2020-11-18 09:34:02 +01:00
Karol Stasiak
fc7643c416 Interrupt handler pointer types 2020-11-11 00:28:21 +01:00
Karol Stasiak
91409504fb Small inlining fix 2020-11-11 00:27:52 +01:00
Karol Stasiak
f4a3601d6e 8080: Fix word negation 2020-11-11 00:25:39 +01:00
Karol Stasiak
889a4f94be All things mentioned in segment layouts should be considered used. 2020-09-29 22:49:15 +02:00
Karol Stasiak
c7008f4414 New output elements: literal ASCII strings and space-padded program name 2020-09-29 22:48:50 +02:00
Karol Stasiak
3af4fcffa9 Z80: Add SLS as an alternate mnemonic for SLL 2020-09-27 18:46:19 +02:00
Karol Stasiak
3a9be16107 Add TRS-80 Model 1 and 3 support 2020-09-26 23:52:49 +02:00
Karol Stasiak
9f40fc5066 Add some trivial test case 2020-09-22 17:59:50 +02:00
Karol Stasiak
b87c40fc9c Migration from Nashorn to GraalJS 2020-09-22 17:59:32 +02:00
Karol Stasiak
1decf2f087 65816: Various codegen bugfixes 2020-09-22 17:59:14 +02:00
Karol Stasiak
c9f602b049 65816: Emulator bugfixes 2020-09-22 17:58:34 +02:00
Karol Stasiak
7de23ddd44 Allow the : operator in const-pure functions 2020-09-21 09:08:49 +02:00
Karol Stasiak
c0eae29a41 Minor compilation speed optimization 2020-09-21 00:15:16 +02:00
Karol Stasiak
a92f24b280 Better detection of memset loops (fixes #59) 2020-09-20 23:39:30 +02:00
Karol Stasiak
ca5fe5cdb0 6809: various optimizations 2020-09-15 17:08:38 +02:00
Karol Stasiak
947a84833a Make some command line options repeatable 2020-09-15 17:08:22 +02:00
Karol Stasiak
615a0d7dc1 Interrupt functions in assembly should not have prologue (fixes #62) 2020-09-09 01:46:34 +02:00
Karol Stasiak
75c8ac19e1 Fix warning messages 2020-09-09 01:45:53 +02:00
Karol Stasiak
5e46e8ade9 Fix alignment of substructures 2020-09-02 00:44:24 +02:00
Karol Stasiak
e09db3d132 Local labels in assembly 2020-09-01 22:00:07 +02:00
Karol Stasiak
57776f7f93 8080: Optimization improvements 2020-08-14 22:29:19 +02:00
Karol Stasiak
7427231c3d Fix constant simplification 2020-08-14 22:29:06 +02:00
Karol Stasiak
b9cd18c3c8 Improve error message for multiple operators at the same priority 2020-08-14 22:28:50 +02:00
Karol Stasiak
49816d18fe Fix volatile 2020-08-14 22:28:31 +02:00
Karol Stasiak
70256e9d46 Fix evaluation of boolean expressions on all targets (#56) 2020-08-14 22:27:23 +02:00
Karol Stasiak
fccbf7df7d Add dollar syntax for decimal operators, disallow identifiers ending in a dollar sign. 2020-08-14 02:22:13 +02:00
Karol Stasiak
0913c5037c Typecheck division of large constants 2020-08-14 01:27:13 +02:00
Karol Stasiak
b5c51e48be Rename zx80next to z80next, document the typo (fixes #55) 2020-08-13 16:53:38 +02:00
Karol Stasiak
a9aac4fca3 Allow omitting the .exe for the -r parameter 2020-08-01 22:20:11 +02:00
Karol Stasiak
d1c0ad6b22 Better type error reporting 2020-07-31 17:50:10 +02:00
Karol Stasiak
89ff89bc48 Some more defensive programming 2020-07-31 17:11:30 +02:00
Karol Stasiak
cf707cc31f Protect against confusable non-ASCII characters 2020-07-31 17:08:44 +02:00
Karol Stasiak
7c4fb50808 Hardcode some more typo hints for things from other programming languages 2020-07-31 17:07:25 +02:00
Karol Stasiak
2382f95b5c Don't repeat warnings about identical replaced characters in the lenient mode 2020-07-31 16:08:29 +02:00
Karol Stasiak
d77ecba518 CoCo: encconv support 2020-07-31 16:07:10 +02:00
Karol Stasiak
2c9a3f7cbd Add ENCODING_NOLOWER 2020-07-31 13:31:07 +02:00
Karol Stasiak
2905e99521 Support local labels in macros for all instructions 2020-07-31 13:29:48 +02:00
Karol Stasiak
bce48e8e4a Support BAT files for the -r options 2020-07-31 13:26:44 +02:00
Karol Stasiak
ed55e2f081 6809: Allow explicit absolute addressing mode 2020-07-31 13:26:08 +02:00
Karol Stasiak
33d67ec932 6809: Correctly assemble STS and STY 2020-07-31 13:25:42 +02:00
Karol Stasiak
f0b083abea 6809: Improve parameter passing for assembly subroutines 2020-07-31 01:56:03 +02:00
Karol Stasiak
d7f2b0688f Improved error reporting for constants used before definition 2020-07-31 01:53:58 +02:00
Karol Stasiak
2ee2de62cd Don't optimize accesses to arrays of size 0 and 1 – assume that overruns are deliberate. 2020-07-24 22:25:21 +02:00
Karol Stasiak
9a67ac553d Fix and improve stdlib optimizations 2020-07-24 22:18:25 +02:00
Karol Stasiak
d5367cc1fe for loops over arrays 2020-07-24 19:12:19 +02:00
Karol Stasiak
b24ac32932 Z80: Support IXH/IXL/IYH/IYL registers. Add Intel syntax for Z80 instructions. 2020-07-24 17:27:37 +02:00
Karol Stasiak
000aede8db Do not remove constants used only as array sizes (#51) 2020-07-19 23:34:14 +02:00
Karol Stasiak
27645e93ad Add -version commandline option 2020-07-19 23:33:03 +02:00
Karol Stasiak
8a0c552762 6502: Optimize some more rarer repeated index calculations (#50) 2020-07-19 01:46:09 +02:00
Karol Stasiak
09ff184172 6502: Optimizations for certain byte additions (#50) 2020-07-19 00:56:23 +02:00
Karol Stasiak
63aab64204 6502: Optimize array accesses for small arrays and also for repeated indices (#50) 2020-07-18 01:32:41 +02:00
Karol Stasiak
d0bf683657 Various fixes 2020-07-18 01:16:31 +02:00
Karol Stasiak
a2c49a1f89 Add manual type alignment. 6502: Optimize multiplications by constants. 2020-07-18 01:15:33 +02:00
Karol Stasiak
31a8504195 Fix raw views of typed pointers 2020-07-18 01:11:20 +02:00
Karol Stasiak
d346800590 6809: enable most unit tests 2020-07-13 23:10:38 +02:00
Karol Stasiak
fff27c59ea 6809: optimize indirect stores 2020-07-13 23:09:52 +02:00
Karol Stasiak
0b948f801d Fix PCW encoding 2020-07-13 23:09:06 +02:00
Karol Stasiak
632bb0c994 Allow modifying large things via pointers 2020-07-13 22:49:23 +02:00
Karol Stasiak
b9736f924c 6809: Fix indirect variable accesses 2020-07-13 22:10:36 +02:00
Karol Stasiak
350c5d2d5d 6809: fix indirect addressing mode 2020-07-13 22:10:04 +02:00
Karol Stasiak
a22571f60b 6809: tons of improvements:
* stack variables
* large comparisons
* pointer optimizations
* fixed constant evaluation
2020-07-09 01:50:18 +02:00
Karol Stasiak
b9bf433308 6809: implement retun dispatch statements 2020-06-24 01:18:38 +02:00
Karol Stasiak
b7a34457fb 6809: Update emulators and fix decimal subtraction 2020-06-22 01:17:42 +02:00
Karol Stasiak
e77811c67c 6809: Implement decimal operations 2020-06-21 02:25:02 +02:00
Karol Stasiak
b387ece71d 6809: Improved support for large types 2020-06-18 20:29:31 +02:00
Karol Stasiak
88b2bbd434 6809: Various improvements 2020-06-17 02:08:17 +02:00
Karol Stasiak
2b0090714c #49 Export fixed addresses to the symbol file 2020-06-17 02:07:32 +02:00
Karol Stasiak
78a680c0d6 6809: Implement +', -' and <<' operators for bytes 2020-06-11 02:39:59 +02:00
Karol Stasiak
2d19537ed3 6809: Fix writing through pointers 2020-06-09 22:56:16 +02:00
Karol Stasiak
a947946313 Fix test 2020-06-09 22:37:55 +02:00
Karol Stasiak
bfe90193fa 6809: Implement / and %% operators 2020-06-09 22:35:57 +02:00
Karol Stasiak
dd78b14c5e 6809: more optimizations 2020-06-09 21:44:22 +02:00
Karol Stasiak
4e19b1ba34 6809: Fix -= 2020-06-09 21:43:31 +02:00
Karol Stasiak
b0577270d5 6809: various assembly fixes 2020-06-09 21:43:04 +02:00
Karol Stasiak
7ba01f83e3 6809: implement * and : operators 2020-06-04 17:07:19 +02:00
Karol Stasiak
b91f259971 6809: Assembly parsing improvements 2020-06-04 17:06:29 +02:00
Karol Stasiak
718245c56a Module templates 2020-06-03 23:13:17 +02:00
Karol Stasiak
655edc35ff Allow sizeof in assembly 2020-05-01 15:18:48 +02:00
Karol Stasiak
7f9bd18bdd The big text encoding overhaul 2020-05-01 01:31:54 +02:00
Karol Stasiak
78fe0e37bb Allow importing modules from subdirectories. Move platform definitions 2020-04-27 12:42:18 +02:00
Karol Stasiak
c8492173ee 6502: Improve index register optimizations 2020-04-27 12:02:45 +02:00
Karol Stasiak
29335d376a 8080: Use a register pair instead of absolute addressing when the registers are loaded anyway 2020-04-08 09:26:44 +02:00
Karol Stasiak
dcf8fb2900 Add support for MkImg for making BBC micro disk images 2020-04-06 22:53:15 +02:00
Karol Stasiak
0cba2dec04 Generate .INF file for every output file 2020-04-06 17:54:59 +02:00
Karol Stasiak
eba91e26e5 Remove a debugging message 2020-04-06 13:28:23 +02:00
Karol Stasiak
5b3e812bb1 8080: Fix some stack-related optimizations 2020-04-06 12:00:10 +02:00
Karol Stasiak
78346af2ef 8080: Some minor improvements 2020-04-06 11:35:14 +02:00
Karol Stasiak
078b22869a 8080: optimize some more cases of stack use 2020-04-05 23:13:43 +02:00
Karol Stasiak
064a9d7022 Fix some NPEs 2020-04-05 23:12:59 +02:00
Karol Stasiak
5df695f2c2 Add support for Pascal-style strings 2020-04-04 00:45:09 +02:00
Karol Stasiak
7ce088514f 6502: Fix and optimize sign extension 2020-04-02 00:22:15 +02:00
Karol Stasiak
80018a55b4 Allow different output formats for different segments 2020-03-31 19:01:29 +02:00
Karol Stasiak
ceef57ed18 Change encodeOneChar to encodeDigit 2020-03-31 18:48:11 +02:00
Karol Stasiak
742fc50ccc Don't used str2word as scrstr2word when the string terminator matches, but digits don't 2020-03-31 17:58:46 +02:00
Karol Stasiak
63ff28e94e Changes to macros and parameter list syntax:
* non-asm macros can now take `const` and `call` parameters
* register parameters to asm functions and macros can be given names if annotated explicitly
2020-03-30 19:23:48 +02:00
Karol Stasiak
5cdc599b1d Avoid overflow errors when estimating memset sizes 2020-03-29 01:45:31 +01:00
Karol Stasiak
5dd3e91c2d 6502: correctly optimize code before BIT instructions 2020-03-29 01:45:02 +01:00
Karol Stasiak
dfe33c9b7a 6502: Pointers should have priority when allocating to the zeropage 2020-03-26 18:52:46 +01:00
Karol Stasiak
78070c115f Some tests that would have prevented few latest commits 2020-03-26 01:47:26 +01:00
Karol Stasiak
59882cf765 6502: Fix zp allocation 2020-03-26 01:38:54 +01:00
Karol Stasiak
2a3c9f04be Fix >32bit constants 2020-03-26 01:36:41 +01:00
Karol Stasiak
5215400cb2 Fix lookup 2020-03-26 01:36:15 +01:00
Karol Stasiak
9bc4bb949e Correctly compile assembly functions using all three registers as separate parameters 2020-03-26 01:35:44 +01:00
Karol Stasiak
842393106e Remove debugging statements 2020-03-26 01:29:26 +01:00
Karol Stasiak
3187ed155e Add signed16 and unsigned16 types 2020-03-25 23:53:26 +01:00
Karol Stasiak
b8e5e71c19 Improve performance of typing expressions 2020-03-25 23:51:53 +01:00
Karol Stasiak
e3d5ce4e81 Fix const functions of the form if c {return x} return y 2020-03-25 23:51:04 +01:00
Karol Stasiak
475496c137 Improvements to constant evaluation 2020-03-25 23:50:06 +01:00
Karol Stasiak
d478f3504f Const-pure functions 2020-03-19 23:53:16 +01:00
Karol Stasiak
5acf92d4e8 Fix test 2020-03-19 21:25:08 +01:00
Karol Stasiak
769f31717d 6502: Detect pointer variables that have to be in the zeropage more accurately 2020-03-19 20:00:28 +01:00
Karol Stasiak
85030d3147 Added constant-only functions min, max, if. Improved handling of constant-only functions. 2020-03-19 19:43:24 +01:00
Karol Stasiak
9cd1e47a37 6502: Fix optimization bug 2020-03-19 18:58:49 +01:00
Karol Stasiak
17e660a2f6 Report lines with invalid short branches 2020-03-17 21:46:43 +01:00
Karol Stasiak
2eb8ef53ca Put almost all warnings behind internal flags 2020-03-17 21:08:43 +01:00
Karol Stasiak
7939b0f2c1 Optimize commutative in-place modifications using arrays and pointers 2020-03-17 12:20:55 +01:00
Karol Stasiak
128dabba3f Reorganize optimizations a bit 2020-03-17 12:20:16 +01:00
Karol Stasiak
a527eea0fc Add more binary operators for constants in assembly 2020-03-17 02:03:44 +01:00
Karol Stasiak
748aa0cf19 Assembly statements should track their source location 2020-03-17 01:59:40 +01:00
Karol Stasiak
ec8f2e6a1c Add warnings for calling from one segment to another overlapping one (#42) and -Wnone flag 2020-03-16 00:03:01 +01:00
Karol Stasiak
83b85ef0fc Support breakpoints in the label file (#44) 2020-03-16 00:01:04 +01:00
Karol Stasiak
f57ecc9800 Improve and optimize memset (see #47) 2020-03-15 01:06:09 +01:00
Karol Stasiak
9f128d3c35 Remove debugging code 2020-03-15 01:04:21 +01:00
Karol Stasiak
24870ae62e Detect obviously overflowing constants 2020-03-15 01:01:08 +01:00
Karol Stasiak
21ffbfc466 Extra optimization pass over non-inlined functions (implements #43) 2020-02-27 01:33:34 +01:00
Karol Stasiak
6e65cd1902 Better error messages when failing to parse array definitions (fixes #45) 2020-02-12 01:07:14 +01:00
Karol Stasiak
259d871786 Improve syntax error reporting in tests 2020-02-12 01:06:31 +01:00
Karol Stasiak
63d4bf2317 6502 Fix an optimization bug with the carry flag (fixes #46) 2020-02-11 01:10:49 +01:00
Karol Stasiak
8b6e89f9a4 Various improvements for macros (fixes #39 and pertains to #40) 2020-02-02 23:25:06 +01:00
Karol Stasiak
5c40d581c0 6502: Fix optimization bug (fixes #41) and add more optimizations involving ARR 2020-01-24 02:19:04 +01:00
Karol Stasiak
d6fd1e8b77 6809: Improve booleans 2020-01-24 02:16:19 +01:00
Karol Stasiak
f247516187 6502: Fix fatal failure when considering undocumented optimizations (fixes #38) 2020-01-18 22:06:50 +01:00
Karol Stasiak
6774c283ae 6502: Add KIL instruction (fixes #37) 2020-01-18 00:09:06 +01:00
Karol Stasiak
7672ba008d 6502: Add missing instructions SHX and LAS 2020-01-18 00:08:02 +01:00
Karol Stasiak
09359235c7 Add immediate addressing mode for short branches and BRK to support some ugly tricks 2020-01-18 00:07:26 +01:00
Karol Stasiak
b3fba658dd Use zeropage indexed adressing when possible 2020-01-18 00:06:20 +01:00
Karol Stasiak
921a59bdad More tests 2020-01-17 23:29:39 +01:00
Karol Stasiak
49bf0d2777 6502: Correctly inlie variables that happen to be returned (fixes #32) 2020-01-11 22:20:02 +01:00
Karol Stasiak
0333b339ca Allow omitting length in file array initalizers (fixes #35) 2020-01-10 18:37:49 +01:00
Karol Stasiak
df1d5421be Do not allocate variables on top of fixed-address vairables and arrays (fixes #26) 2020-01-03 23:09:20 +01:00
Karol Stasiak
6e36166af2 Never remove or inline volatile variables (fixes #27) 2020-01-03 21:28:10 +01:00
Karol Stasiak
b9cdd0ffff Fix for output directory creation (#21) 2020-01-03 16:13:54 +01:00