1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-11-10 02:05:17 +00:00
Commit Graph

264 Commits

Author SHA1 Message Date
Karol Stasiak
3852b2dbe9 More label file formats 2019-06-14 11:39:11 +02:00
Karol Stasiak
dc13dbaa9a Code cleanup 2019-06-12 22:55:34 +02:00
Karol Stasiak
0f179f79aa Many big important things:
– Add support for undocumented 8085 instructions
– Convert undocumented  8085 instructions to 8086
– Add new CPU types and categorize CPU types correctly
– Fix macro expansion in some situations
– Improve 8080 optimizations
– Improve documentation
– Other improvements
2019-06-12 12:06:02 +02:00
Karol Stasiak
4ec2fc2f62 Make tests toggleable by platform 2019-06-12 02:58:33 +02:00
Karol Stasiak
3b3fb24284 8086: partially fix memory leak in unit tests 2019-06-12 02:56:44 +02:00
Karol Stasiak
a1b868e3df Optimize byte division by power of two 2019-06-06 13:35:26 +02:00
Karol Stasiak
e31737ad40 Unsigned division of word by byte 2019-06-06 13:06:30 +02:00
Karol Stasiak
2583f280a8 Unsigned byte division by non-constant 2019-06-06 01:17:34 +02:00
Karol Stasiak
010b44f23e Unsigned byte division by a constant 2019-06-05 18:36:39 +02:00
Karol Stasiak
b3bb9bb063 Intel 8085 support 2019-05-31 17:27:38 +02:00
Karol Stasiak
1cb3b672b1 Add 8080-to-8086 translation 2019-05-31 17:03:35 +02:00
Karol Stasiak
d461046566 6502: use index registers less often 2019-05-29 14:09:41 +02:00
Karol Stasiak
d23f6e4248 6502: improve optimizations using undocumented instructions 2019-05-29 14:09:21 +02:00
Karol Stasiak
138dcfa19f 8080: implement signed byte comparisons for CPU's without the overflow flag 2019-05-29 14:07:57 +02:00
Karol Stasiak
62984fce9b 8080: optimize handling 2-byte parameters 2019-05-02 13:33:45 +02:00
Karol Stasiak
1862fed70f The @struct array format; fix the @long format 2019-04-30 01:30:22 +02:00
Karol Stasiak
d9f88cdfad Const arrays 2019-04-30 00:41:42 +02:00
Karol Stasiak
546c4d0f44 Unified syntax for indexing 2019-04-18 16:24:46 +02:00
Karol Stasiak
0a36d83164 nullptr 2019-04-16 16:59:16 +02:00
Karol Stasiak
9ea04db566 Use the return variable directly if applicable 2019-04-16 16:34:17 +02:00
Karol Stasiak
629691dfb3 Fix stack variables on 8080 and LR35902 2019-04-16 12:09:14 +02:00
Karol Stasiak
d0f64f2cee Short syntax for small functions 2019-04-15 19:56:14 +02:00
Karol Stasiak
029e84b0f0 Unions, typed pointers, indirect field access via pointers 2019-04-15 19:45:26 +02:00
Karol Stasiak
1ba4b57c1c Array elements can now be types other than byte 2019-04-15 01:57:18 +02:00
Karol Stasiak
d3e62c0065 Preliminary struct support 2019-04-15 01:30:47 +02:00
Karol Stasiak
4cd1db0e0f Allow putting pointer variables anywhere 2019-04-15 00:27:34 +02:00
Karol Stasiak
194f79f907 65816: Various fixes regarding (d,S),Y addressing mode 2019-04-15 00:21:25 +02:00
Karol Stasiak
69ccd993b2 6502: Functions shouldn't use index registers if not necessary 2019-03-18 21:54:26 +01:00
Karol Stasiak
b8547ed154 Aliases should access subfields 2019-03-18 15:14:13 +01:00
Karol Stasiak
6979cbfe39 Generate checksums for Game Boy 2019-01-11 15:17:48 +01:00
Karol Stasiak
fb42e77e6e 6502: Two fixes:
– fix writing constants to volatile variables
– fix optimizing variables to registers yet again
2018-12-31 13:19:13 +01:00
Karol Stasiak
d7b2181ef5 If a variable is used wholly within a loop body and initialized conditionally, do not remove the last store to it 2018-12-29 20:07:43 +01:00
Karol Stasiak
cbe709a9cf 6502: fix optimizations using index registers 2018-12-29 20:01:17 +01:00
Karol Stasiak
f848bf898c 6502: inline variables to registers swapping addressing modes 2018-12-27 20:49:54 +01:00
Karol Stasiak
59afc24db6 Fix memset 2018-12-27 14:19:04 +01:00
Karol Stasiak
0ded460840 8080: Test subroutine extraction 2018-12-27 14:18:30 +01:00
Karol Stasiak
9ff254c72d Allow hi() and lo() in inline assembly 2018-12-27 14:17:48 +01:00
Karol Stasiak
4d64bbafac 6502: always fold constants 2018-12-27 14:16:34 +01:00
Karol Stasiak
f12463aef0 Optimization refactoring:
– -Of should imply -finline
– certain optimizations should be controllable
– unused global symbols should be removed even if we're not optimizing
2018-12-27 01:18:29 +01:00
Karol Stasiak
0bb662183c Faster comparisons to 0 and $FFFF 2018-12-26 02:05:41 +01:00
Karol Stasiak
bf5639761b Optimize constant comparisons 2018-12-26 01:01:43 +01:00
Karol Stasiak
acaaa5bdfe Implicit ranges in for loops are dumb, remove 2018-12-22 01:30:54 +01:00
Karol Stasiak
84c3406dc7 Fix for over enum 2018-12-22 01:30:39 +01:00
Karol Stasiak
02e91070aa Accept bytes as LHS for >>>> 2018-12-21 22:36:53 +01:00
Karol Stasiak
d62901fb51 6502: Allow more complex expressions 2018-12-21 22:36:29 +01:00
Karol Stasiak
36a0065b96 Forbid redefining builtins 2018-12-21 22:35:16 +01:00
Karol Stasiak
e43fb39781 Optimize some stdlib calls 2018-12-21 22:33:27 +01:00
Karol Stasiak
960cee5124 Foreach statement; emitting subprocedures 2018-12-19 18:13:38 +01:00
Karol Stasiak
fc10746522 Alias improvements:
– aliases can now override other objects
– take aliases into account when ordering functions for optimizations and inlining
2018-12-19 17:33:51 +01:00
Karol Stasiak
49ee0fd3a2 MInor test suite improvements 2018-12-19 17:28:15 +01:00
Karol Stasiak
bcd17f1a78 6502: more bit-twiddling optimizations 2018-12-19 01:11:40 +01:00
Karol Stasiak
08f9426ccb Multiplication fixes and improvements 2018-12-19 01:10:39 +01:00
Karol Stasiak
2454f223c8 Return dispatch over enums 2018-12-19 01:04:56 +01:00
Karol Stasiak
acf9db80d3 Reenable mistakenly disabled tests 2018-12-16 22:56:02 +01:00
Karol Stasiak
eb29e78f56 More warnings 2018-12-16 21:07:27 +01:00
Karol Stasiak
5a99dc7293 65816: various improvements 2018-12-16 19:34:33 +01:00
Karol Stasiak
cd8697552c Add sizeof operator 2018-12-16 15:43:17 +01:00
Karol Stasiak
0e5d79f222 6502 Minor comparison optimisation 2018-12-15 00:01:34 +01:00
Karol Stasiak
f32d72b51f Multiplication u16×u8 2018-12-14 22:50:20 +01:00
Karol Stasiak
65f5c552b4 6502: optimization improvements 2018-12-14 22:09:22 +01:00
Karol Stasiak
c28b71add5 6502: Stack-related things:
– software variable stack
– fixes for handling stack variables
2018-12-14 22:01:52 +01:00
Karol Stasiak
eb6b7d7769 Fix and improve nonet operations 2018-12-14 15:43:12 +01:00
Karol Stasiak
406d69c74a Add original line numbers to generated assembly 2018-12-14 15:42:31 +01:00
Karol Stasiak
a985c4f753 More various optimization fixes and improvements 2018-12-14 00:10:30 +01:00
Karol Stasiak
dbe8e39e4a various optimization fixes and improvements 2018-12-13 23:18:56 +01:00
Karol Stasiak
c1ce4a9283 8080: fixed shifting by 0 2018-12-13 23:12:46 +01:00
Karol Stasiak
df71435c78 Fix for...downto loops 2018-10-11 23:59:50 +02:00
Karol Stasiak
6b43f73f57 Don't deduplicate non-elidable code 2018-10-04 23:23:04 +02:00
Karol Stasiak
fe1bf68295 Add align keyword 2018-10-04 21:34:53 +02:00
Karol Stasiak
3736b5ae56 6502: Use zeropage addressing mode when accessing fixed zeropage locations 2018-09-29 01:16:22 +02:00
Karol Stasiak
cbe6d03e60 8080: Optimized multiplication 2018-09-28 23:45:26 +02:00
Karol Stasiak
74dbca1f53 Fix typo in test 2018-08-16 22:01:45 +02:00
Karol Stasiak
376c3283b8 Improvements to trigonometric functions 2018-08-08 23:52:47 +02:00
Karol Stasiak
34b7107d27 Allow casting to wider types 2018-08-08 23:14:09 +02:00
Karol Stasiak
9581891d66 Following jumps. Generating conditional returns/calls. 2018-08-08 23:12:20 +02:00
Karol Stasiak
2d0f3a5a12 Fix tests 2018-08-08 18:48:11 +02:00
Karol Stasiak
2b279ac5e8 Give the preprocessor access to compilation options 2018-08-08 13:44:30 +02:00
Karol Stasiak
2af8304512 Deduplicate more complex code. Better deduplication. 2018-08-08 01:53:47 +02:00
Karol Stasiak
02d6b5b71c 6502: Crank up the optimizations 2018-08-07 21:37:25 +02:00
Karol Stasiak
8dfb223a8c Fast memset for Z80 and 6502 2018-08-07 17:37:09 +02:00
Karol Stasiak
ff16854a11 Code deduplication 2018-08-06 19:29:09 +02:00
Karol Stasiak
48b183828b Z80: LDH instruction for LR35902 2018-08-03 16:43:31 +02:00
Karol Stasiak
f4a2c96512 Fix comparisons 2018-08-03 16:21:02 +02:00
Karol Stasiak
fab1cafec3 Z80: Intel syntax support 2018-08-03 13:23:37 +02:00
Karol Stasiak
388ceb8b3a 6502: software BCD, increase default zpreg to 4 2018-08-03 13:06:23 +02:00
Karol Stasiak
30aa62ceaf Z80: Fix 16-bit operations 2018-08-03 13:02:18 +02:00
Karol Stasiak
e952d89849 Z80: Intel syntax for output. 2018-08-01 21:16:20 +02:00
Karol Stasiak
d4beba11a1 Z80: >>' operator 2018-08-01 18:49:37 +02:00
Karol Stasiak
9b5b39181a Z80: Decimal subtraction on 8080, fixes for adding longs returned from functions 2018-08-01 15:33:07 +02:00
Karol Stasiak
69f233e378 Z80: Interrupt handlers. Allow using IY as base pointer. 2018-08-01 12:50:05 +02:00
Karol Stasiak
e914ad6d7b Move label generation into a separate class 2018-07-31 18:16:36 +02:00
Karol Stasiak
53f550d266 Z80: Fix line size calculations 2018-07-31 00:52:01 +02:00
Karol Stasiak
2bac42c187 Optimizations for LR35902 and 8080 2018-07-30 23:51:41 +02:00
Karol Stasiak
6d7643b817 6502: Better descriptions of benchmarked tests 2018-07-30 23:50:44 +02:00
Karol Stasiak
998902acf6 Refactor: error logging 2018-07-30 18:53:08 +02:00
Karol Stasiak
cb92b09942 Improvements related to large types:
– returning types larger than 2
– fastcall for 1 parameter of size 3 or 4 on Z80
– more integer types (up to int128)
– marked farword as a deprecated alias of int24
2018-07-30 14:33:16 +02:00
Karol Stasiak
3c019b06c1 Tests for LR35902 2018-07-27 19:12:28 +02:00
Karol Stasiak
600e49cf49 Make some tests work on LR35902 2018-07-27 19:10:15 +02:00
Karol Stasiak
1948c38e04 Separate optimization presets for Z80, LR35902 and 8080 2018-07-27 19:09:38 +02:00
Karol Stasiak
2ca30315ca Preparations for work on LR35902 support 2018-07-24 23:44:00 +02:00