Commit Graph

674 Commits

Author SHA1 Message Date
Irmen de Jong
ff715881bc allow scoped identifiers to reference a subroutine parameter directly.
also for asmsubroutines, but the asm generation for that is not yet done.
2021-11-21 23:21:39 +01:00
Irmen de Jong
e86246a985 todo 2021-11-21 14:00:19 +01:00
Irmen de Jong
625aaa02eb documented the compiler's command line options in more detail 2021-11-21 13:53:22 +01:00
Irmen de Jong
787e35c9f3 asm optimizer can now also see of a symbol reference if it is in IO space or not (to a certain extent), so that these instructions are no longer optimized away 2021-11-21 13:12:51 +01:00
Irmen de Jong
8887e6af91 fix substituting 0 only if its actually the same variable that's substituted 2021-11-21 12:34:57 +01:00
Irmen de Jong
3c39baf1d6 don't optimize seemingly redundant assembly instructions away that manipulate IO memory space 2021-11-21 03:24:03 +01:00
Irmen de Jong
b292124f3c replaced many short/int values by unsigned types if appropriate 2021-11-21 00:55:56 +01:00
Irmen de Jong
107935ed31 add some more const folding patterns 2021-11-20 22:47:49 +01:00
Irmen de Jong
adfaddbcf4 give a nicer error when given a wrong compilation target. 2021-11-20 18:30:55 +01:00
Irmen de Jong
74db5c6be7 fix referencesIdentifier() and better removal of unnecessary assignments 2021-11-20 17:41:41 +01:00
Irmen de Jong
f9399bcce7 r=(q+r)-c and r=q+(r-c) are now both also 'augmentable', and BinExprSplitter doesn't check for associativeOperator anymore 2021-11-20 02:03:32 +01:00
Irmen de Jong
b334d89715 refactor and fix the way memory addresses are checked to be in IO space or regular ram 2021-11-18 22:47:58 +01:00
Irmen de Jong
4f5d36a84d optimization added: bitwise operations with a negative constant number -> replace the number by its positive 2 complement 2021-11-18 02:51:42 +01:00
Irmen de Jong
8f379e2262 give an error when initializing an integer var with a float value instead of silently rounding 2021-11-18 01:56:11 +01:00
Irmen de Jong
fa11a6e18b removed faulty and too aggressive assembly optimization of double-store 2021-11-18 01:43:22 +01:00
Irmen de Jong
52bedce8f4 added test for assignment.isAugmented 2021-11-18 01:05:16 +01:00
Irmen de Jong
4c82af36e6 fix improperly changed behavior about =0 initializer 2021-11-18 00:17:22 +01:00
Irmen de Jong
dafa0d9138 fix compiler crash bug due to reused ast expression nodes. Now all (relevant) Nodes have a copy() function to make a clone. 2021-11-17 23:05:59 +01:00
Irmen de Jong
6af3209d4d add more const foldings 2021-11-17 00:57:00 +01:00
Irmen de Jong
964e8e0a17 update to Kotlin 1.6.0 2021-11-16 22:36:23 +01:00
Irmen de Jong
1f60a2d8b9 comments 2021-11-15 01:30:12 +01:00
Irmen de Jong
c80df4140b until-loop condition now also simplified to avoid stack-eval 2021-11-14 22:51:02 +01:00
Irmen de Jong
ab2d1122a9 conditional expressions are optimized more intelligently (simple ones are not split off in separate assignments) 2021-11-14 12:38:56 +01:00
Irmen de Jong
5190594c8a added several more assembly-level optimizations to remove redundant instructions 2021-11-14 12:23:46 +01:00
Irmen de Jong
c858ceeb58 compiler shouldn't use cx16.r15 as temp var 2021-11-14 02:38:59 +01:00
Irmen de Jong
f0f52b9166 optimize typecasted binary expression to avoid even more estack use. also fix wrong parent crash in removal of unused variable's assignments. 2021-11-13 14:22:37 +01:00
Irmen de Jong
00c6f74481 tweak temp float 2021-11-13 12:56:59 +01:00
Irmen de Jong
2177ba0ed2 added signed versions of the cx16 virtual registers 2021-11-13 02:42:21 +01:00
Irmen de Jong
69f4a4d4f8 tweak expr.typecastTo() a bit 2021-11-11 00:15:09 +01:00
Irmen de Jong
222bcb808f optimize load-store-load combo in output asm 2021-11-10 23:47:35 +01:00
Irmen de Jong
8df3da11e3 add cosr8, sinr8, cosr16 and sinr16 builtin functions that take a degree 0..179 (= 0..358 in 2 degree steps)
to more easily scale halves/quarters etc of a circle than possible with the ones that take 0..255 'degrees'.
2021-11-09 23:39:26 +01:00
Irmen de Jong
b909facfe5 fix compiler stackoverflow crash on certain typecasted expressions containing floats. 2021-11-09 19:31:19 +01:00
Irmen de Jong
7780d94de1 discovered crash related to float typecasting in asm assignment codegen 2021-11-09 03:45:07 +01:00
Irmen de Jong
f2c440e466 new sin/cos idea 2021-11-09 02:38:43 +01:00
Irmen de Jong
4937e004b5 fix compiler crash where it used wrong datatype in split assignment
fixes crash for "ubyte bb ;; uword ww ;; bb = not bb or not ww"
2021-11-09 01:13:23 +01:00
Irmen de Jong
4cb383dccb discovered crash about storage size mismatch 2021-11-08 21:44:06 +01:00
Irmen de Jong
857724c7e6 attempt to make if-statement not use stack eval anymore 2021-11-08 19:07:36 +01:00
Irmen de Jong
60627ce756 kotest migration done, fixes #70 2021-11-08 16:19:24 +01:00
Irmen de Jong
7e8db16e18 moved to kotest assertions in compilerAst module tests 2021-11-07 21:18:18 +01:00
Irmen de Jong
1fbbed7e23 remove unittest machinery from modules that don't have tests 2021-11-07 17:34:14 +01:00
Irmen de Jong
984272beb4 migrated compilerAst module to KoTest (but not finished with the assertions yet) 2021-11-07 17:25:53 +01:00
Irmen de Jong
793596614e attempt to fix ReadTheDocs build issue 2021-11-07 00:37:31 +01:00
Irmen de Jong
136280100c attempt to fix ReadTheDocs build issue 2021-11-07 00:23:44 +01:00
Irmen de Jong
72a7e61fd0 version 7.2 2021-11-06 23:42:13 +01:00
Irmen de Jong
f40620aa25 "not x" as a condition (if, while, until) is optimized into "x==0", this avoids calculating the value 2021-11-06 23:25:32 +01:00
Irmen de Jong
57a9fed42b todo 2021-11-06 19:09:33 +01:00
Irmen de Jong
74456d1135 optimized prefix-expression in to use stack evaluation less 2021-11-06 17:57:00 +01:00
Irmen de Jong
be73739c62 todo 2021-11-03 23:08:11 +01:00
Irmen de Jong
eea3fb48a8 add command line option 'optfloatx' to explicitly re-enable float expr optimization as this can increase code size significantly.
The output size of the various example programs using floating point, when not using this optimization, has been reduced significantly.
The resulting code runs a (tiny) bit slower though.
2021-11-03 22:52:08 +01:00
Irmen de Jong
b4fa72c058 fix parent node linkage for reading array parameter 2021-11-03 21:57:31 +01:00
Irmen de Jong
b0a865b0f1 update todo 2021-11-02 23:55:50 +01:00
Irmen de Jong
3410aea788 fix regression: don't add 0 initializer when variable is assigned to anyway (or is loopvar in a for-loop) 2021-11-02 21:23:59 +01:00
Irmen de Jong
bc0a133bb1 doc 2021-11-02 20:24:45 +01:00
Irmen de Jong
1110bd0851 fix vardecl initialization value to not use stack eval anymore but separate assignment
(this causes the optimized assignment code gen to be used instead)
but some programs now end up larger in output size
2021-11-01 00:24:15 +01:00
Irmen de Jong
1b576f826d remove unneeded sibling methods 2021-10-31 16:50:15 +01:00
Irmen de Jong
fe17566370 improved reporting of slow stack based evaluation code 2021-10-31 14:18:49 +01:00
Irmen de Jong
97836e18b2 simplified gradle config, automatically run installDist task after build 2021-10-30 12:01:52 +02:00
Irmen de Jong
7b69df4db2 todos 2021-10-30 00:38:48 +02:00
Irmen de Jong
4d5bd0fa32 simplify ZeroPage reserved locations handling a bit 2021-10-29 17:34:42 +02:00
Irmen de Jong
0b5ddcdc9b split out the code generator into own project submodule 2021-10-29 05:00:30 +02:00
Irmen de Jong
f21dcaa6fb split out the code optimizers into own project submodule 2021-10-29 02:42:10 +02:00
Irmen de Jong
d4513364fb fix compiler crash when file on command line doesn't exist 2021-10-27 00:23:54 +02:00
Irmen de Jong
f4186981fd todo 2021-10-26 23:30:48 +02:00
Irmen de Jong
4668932bac todo 2021-10-19 23:38:07 +02:00
Irmen de Jong
502bf90007 comments 2021-10-19 01:12:28 +02:00
Irmen de Jong
cf0e395921 got rid of SourceCode.pathString() and the 'need' to strip < and > 2021-10-16 17:15:22 +02:00
Irmen de Jong
6ef438ce50 todo 2021-10-16 15:08:36 +02:00
Irmen de Jong
06defd0cb0 paths are now always relative 2021-10-16 02:43:22 +02:00
Irmen de Jong
0f80897c50 todo 2021-10-15 01:02:32 +02:00
Irmen de Jong
57bb1c2c0d performance optimized checks against short ranges of values 2021-10-15 00:51:45 +02:00
Irmen de Jong
7b35b414e8 tweak check of DataType against multiple values 2021-10-15 00:39:42 +02:00
Irmen de Jong
761aac7a23 replace inferredType.istype() by infix form 2021-10-15 00:28:23 +02:00
Irmen de Jong
15a02d7664 making InferredType easier to use 2021-10-15 00:18:13 +02:00
Irmen de Jong
16ed68c1ec Module.name is now derived back from the source's origin string 2021-10-14 23:58:14 +02:00
Irmen de Jong
4d27c2901b fix weird error printing when doing %import textio.p8 2021-10-13 21:55:51 +02:00
Irmen de Jong
855e18b31c fix SourceCode to properly set the sourceName of a resource or string as well 2021-10-13 21:46:38 +02:00
Irmen de Jong
d790878af6 enabled test 2021-10-13 20:28:42 +02:00
Irmen de Jong
6070afa6b6 cleanup SourceCode class 2021-10-13 19:16:01 +02:00
Irmen de Jong
975594703d doc 2021-10-13 18:21:48 +02:00
Irmen de Jong
6b8c3ef614 renamed command line option -libdirs to -srcdirs
this more clearly separates this meaning from the internal library modules
2021-10-13 18:16:51 +02:00
Irmen de Jong
ca3a990f9e todo 2021-10-13 01:33:29 +02:00
Irmen de Jong
66574d058a renamed InferredType.typeOrElse to getOr()
this is closer to the convention of most functional return types
2021-10-13 00:21:38 +02:00
Irmen de Jong
07132a2c42 removed unreliable inlining of non-asmsub subroutines. Fixes #60 2021-10-08 23:09:38 +02:00
Irmen de Jong
af99173cd7 range expressions are on integers only 2021-09-06 22:15:27 +02:00
Irmen de Jong
fd1f30f92b removed %target directive (didn't add much, too confusing, only supported single target) 2021-09-04 15:01:16 +02:00
Irmen de Jong
85897ef8cd launch box16 emulator with the vice monlist file that contains symbols+breakpoints 2021-07-06 22:27:47 +02:00
Irmen de Jong
6367c6d116 add support for second alternative emulator (box16 in case of cx16 target) 2021-07-05 22:47:51 +02:00
Irmen de Jong
049dbf5a78 improve compiler error when defining duplicate block names 2021-07-04 15:14:39 +02:00
Irmen de Jong
95a62fcdd1 tidy up todo doc 2021-07-02 21:47:27 +02:00
Irmen de Jong
7880ac1909 wording and version 2021-06-24 21:34:11 +02:00
Irmen de Jong
f53848b4b9 wording and version 2021-06-24 21:25:35 +02:00
Irmen de Jong
fd2bbd2b59 no longer allow subroutine name same as its block name due to asm symbol scoping issues 2021-06-12 17:31:09 +02:00
Irmen de Jong
127c470746 add some explanation about Cx16 v38 - v39 issue 2021-06-12 15:48:04 +02:00
Irmen de Jong
c5bfef4264 slight improvement on scope doc, added doc example for %asminclude/%asmbinary 2021-06-09 23:46:07 +02:00
Irmen de Jong
19e99204b9 fix asm symbol name scoping bug and add unit tests for this 2021-06-04 22:42:28 +02:00
Irmen de Jong
13f5b94c3e Clarified instructions of how to obtain the compiler. Fixed sphinx css config issue. 2021-06-03 21:21:44 +02:00
Irmen de Jong
3a2498401d working on unit tests for symbol scope bug 2021-06-03 21:21:38 +02:00
Irmen de Jong
e7f6f0950f identified asm symbol name scoping bugs 2021-06-01 22:21:50 +02:00
Irmen de Jong
d4b69ac79c improved repeat counter vars allocation (re-use var if possible) 2021-05-30 15:30:34 +02:00
Irmen de Jong
31ae9e1243 refactor repeat loop counter var creation into single routine 2021-05-22 13:01:51 +02:00