Irmen de Jong
|
f37f062cdc
|
fix for loop pre-check
|
2023-05-17 00:33:55 +02:00 |
|
Irmen de Jong
|
bd2bcb6994
|
Merge branch 'master' into version_9
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/AssignmentGen.kt
# compiler/res/prog8lib/c128/syslib.p8
# compiler/res/prog8lib/c64/syslib.p8
# compiler/res/prog8lib/cx16/syslib.p8
# docs/source/todo.rst
# examples/test.p8
# intermediate/src/prog8/intermediate/IRInstructions.kt
|
2023-05-08 23:17:52 +02:00 |
|
Irmen de Jong
|
4c8898a639
|
fix typecheck crash on certain byte to word assignments
|
2023-05-08 23:02:48 +02:00 |
|
Irmen de Jong
|
ef46fb2685
|
refactor
|
2023-05-08 21:51:55 +02:00 |
|
Irmen de Jong
|
d5d6dd3614
|
optimize typecast expr
|
2023-05-08 03:30:14 +02:00 |
|
Irmen de Jong
|
6c233c6a0a
|
optimize add/sub expr
|
2023-05-08 02:41:34 +02:00 |
|
Irmen de Jong
|
6db715d879
|
optimize multiplication expr
|
2023-05-08 02:10:54 +02:00 |
|
Irmen de Jong
|
ab02e8a546
|
optimize more carry flag assembly
|
2023-05-07 23:55:34 +02:00 |
|
Irmen de Jong
|
8cbfe64f19
|
optimize some carry flag assembly
|
2023-05-07 23:27:49 +02:00 |
|
Irmen de Jong
|
fd1e9971e4
|
asmsub Pc params and returnvalue must be boolean
|
2023-05-07 22:59:30 +02:00 |
|
Irmen de Jong
|
68336a76c5
|
optimized word comparison expressions
|
2023-05-07 20:40:48 +02:00 |
|
Irmen de Jong
|
393e914a86
|
optimized word equality comparison expressions
|
2023-05-07 18:55:17 +02:00 |
|
Irmen de Jong
|
ffb54110e9
|
optimized byte comparison expressions
|
2023-05-07 15:15:58 +02:00 |
|
Irmen de Jong
|
533d825f1a
|
optimized ubyte comparison expressions
|
2023-05-07 14:47:31 +02:00 |
|
Irmen de Jong
|
c65279b672
|
optimized logical expressions more
|
2023-05-07 13:29:45 +02:00 |
|
Irmen de Jong
|
21bc505d85
|
for loops no longer execute when from var already reached beyond the end
|
2023-05-03 00:43:03 +02:00 |
|
Irmen de Jong
|
d81fdf6d6b
|
for loops...
|
2023-05-02 22:55:58 +02:00 |
|
Irmen de Jong
|
92062d056d
|
divmod() now works on multiple data types including float.
divmodw() has been removed
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
06368ab0a1
|
sqrt() now works on multiple data types including float.
no need to use floats.sqrtf() anymore
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
38efe25c68
|
abs() now works on multiple data types including float.
no need to use floats.fabs() anymore
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
319079de7a
|
sqrt
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
025bf900a5
|
min max docs, added floats.minf() and maxf()
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
2885f4f7b1
|
fix
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
c07eda15b1
|
adding min() and max()
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
4274296cf3
|
api change: new 'cbm' module that now contains the common CBM kernal variables and routines.
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
76a203d4df
|
api change: rename builtin func sqrt16 to sqrtw
|
2023-05-02 01:19:53 +02:00 |
|
Irmen de Jong
|
c35a183a64
|
extra fix
|
2023-04-29 17:24:01 +02:00 |
|
Irmen de Jong
|
9cdd5fe7f2
|
fix byte to word sign extension error in certain cases
|
2023-04-29 17:14:50 +02:00 |
|
Irmen de Jong
|
c21428215e
|
fix possible mkword() error
|
2023-04-29 14:39:14 +02:00 |
|
Irmen de Jong
|
e056a28316
|
c128: fix memory bank resetting
|
2023-04-28 04:02:07 +02:00 |
|
Irmen de Jong
|
7c1d5cadd7
|
fix sort and reverse on strings on 6502 codegen
|
2023-04-10 19:33:24 +02:00 |
|
Irmen de Jong
|
c560abedba
|
fix compiler crash on rol/ror array value
|
2023-04-09 22:29:11 +02:00 |
|
Irmen de Jong
|
f47498888c
|
optimize imports
|
2023-04-07 22:34:23 +02:00 |
|
Irmen de Jong
|
2d85fd093e
|
Merge branch 'new-expr-codegen'
# Conflicts:
# codeGenCpu6502/src/prog8/codegen/cpu6502/BuiltinFunctionsAsmGen.kt
# codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt
# examples/test.p8
|
2023-03-29 23:56:16 +02:00 |
|
Irmen de Jong
|
d936568b76
|
added divmod() and divmodw() builtin functions to efficiently compute division and remainder in a single call
|
2023-03-29 23:46:44 +02:00 |
|
Irmen de Jong
|
4598a83e8e
|
fixing new comparisons
|
2023-03-29 22:06:32 +02:00 |
|
Irmen de Jong
|
f4bf00ad31
|
fix string compare and ifelse
|
2023-03-28 22:46:01 +02:00 |
|
Irmen de Jong
|
729209574e
|
fixing str compares codegen
|
2023-03-28 20:01:26 +02:00 |
|
Irmen de Jong
|
f28206d989
|
new attempt
|
2023-03-28 20:01:26 +02:00 |
|
Irmen de Jong
|
a7b9f53967
|
fix word comparison bug in asmgen
|
2023-03-26 23:44:06 +02:00 |
|
Irmen de Jong
|
1fa2e2e37d
|
3rd party library versions upgrades
|
2023-03-26 21:36:21 +02:00 |
|
Irmen de Jong
|
5cbf859458
|
cleanup
|
2023-03-26 15:08:57 +02:00 |
|
Irmen de Jong
|
629ed74d09
|
got rid of rpn deadend code...
|
2023-03-25 18:45:17 +01:00 |
|
Irmen de Jong
|
ca2af2ca63
|
todo
|
2023-03-25 18:23:33 +01:00 |
|
Irmen de Jong
|
52ab089615
|
rpn: implement more comparisons
|
2023-03-25 18:21:10 +01:00 |
|
Irmen de Jong
|
01461a196d
|
implementing optimized comparisons
|
2023-03-25 00:08:21 +01:00 |
|
Irmen de Jong
|
04832f052a
|
working on doing comparison codegen differently
|
2023-03-25 00:08:21 +01:00 |
|
Irmen de Jong
|
c8b2c8ae50
|
extra asmvars now also moved into BSS section instead of taking up space inline
|
2023-03-25 00:00:29 +01:00 |
|
Irmen de Jong
|
fc3ec57437
|
fix wrong branch in in-place byte equality expression
|
2023-03-23 00:45:47 +01:00 |
|
Irmen de Jong
|
cc81d6fe82
|
remove traces of ** operator
|
2023-03-22 00:51:58 +01:00 |
|
Irmen de Jong
|
9c71e2f1c8
|
rpn optimizations
|
2023-03-21 18:41:37 +01:00 |
|
Irmen de Jong
|
134fd62da8
|
RPN: better handling of bit shifts
|
2023-03-21 02:58:26 +01:00 |
|
Irmen de Jong
|
2afd283582
|
optimize RPN
|
2023-03-21 00:05:32 +01:00 |
|
Irmen de Jong
|
d265271148
|
fix rpn variable depth clobber and type error
|
2023-03-20 22:18:10 +01:00 |
|
Irmen de Jong
|
b40e397b28
|
fix rpn result type mismatch
|
2023-03-20 00:58:48 +01:00 |
|
Irmen de Jong
|
35ff1d996a
|
only reuse actual counter vars
|
2023-03-19 21:53:49 +01:00 |
|
Irmen de Jong
|
deea0b05cb
|
tweak cx16 system init and reset to not reset Vera any more
uses new audio routine to silence the audio
|
2023-03-19 21:16:23 +01:00 |
|
Irmen de Jong
|
a819b4a5a5
|
fix RPN issues
|
2023-03-19 17:35:28 +01:00 |
|
Irmen de Jong
|
df2d7d4734
|
fix RPN comparison exprs
|
2023-03-19 16:08:48 +01:00 |
|
Irmen de Jong
|
374464a1f8
|
weird condition operator...
|
2023-03-19 01:32:20 +01:00 |
|
Irmen de Jong
|
c8d0bf27af
|
get rid of useless scope param
|
2023-03-19 00:58:45 +01:00 |
|
Irmen de Jong
|
6e4ae034b2
|
more Rpn optimizations
|
2023-03-19 00:48:12 +01:00 |
|
Irmen de Jong
|
52b560e72d
|
more Rpn optimizations
|
2023-03-18 19:13:32 +01:00 |
|
Irmen de Jong
|
9b971ad222
|
fix PeekW and PokeW optimizations
|
2023-03-18 17:36:32 +01:00 |
|
Irmen de Jong
|
3613162d09
|
fix RPN string comparisons
|
2023-03-18 16:55:03 +01:00 |
|
Irmen de Jong
|
84b31e65e1
|
more rpn optimization
|
2023-03-18 14:23:17 +01:00 |
|
Irmen de Jong
|
dd78a3a686
|
fix typo in comparison function
|
2023-03-18 12:52:50 +01:00 |
|
Irmen de Jong
|
94c06e13f4
|
implementing Rpn optimizations 2
|
2023-03-18 12:43:45 +01:00 |
|
Irmen de Jong
|
e8bebe5a75
|
implementing Rpn optimizations
|
2023-03-18 01:13:02 +01:00 |
|
Irmen de Jong
|
5b0e1b4f9e
|
a little rpn refactor
|
2023-03-17 23:04:56 +01:00 |
|
Irmen de Jong
|
8c0a93779b
|
added first implementation of RPN 6502 codegen - all via stackeval still
|
2023-03-17 22:28:22 +01:00 |
|
Irmen de Jong
|
9241479da4
|
add "-rpn" command line switch to transform exprs to RPN in codegen
|
2023-03-17 22:28:22 +01:00 |
|
Irmen de Jong
|
8ffca93cd5
|
added transform routine for expr -> RPN
|
2023-03-17 22:28:22 +01:00 |
|
Irmen de Jong
|
7fea0c124a
|
introduce PtRpn node to replace PtBinaryExpression later
|
2023-03-17 22:28:22 +01:00 |
|
Irmen de Jong
|
c07cd72e85
|
restored the non=problematic asm optimization steps...
|
2023-03-14 22:30:50 +01:00 |
|
Irmen de Jong
|
e2c101206c
|
removed a problematic asm optimization step that could result in dysfunctional code when writing to I/O addresses
|
2023-03-14 22:14:48 +01:00 |
|
Irmen de Jong
|
ebd9f1471b
|
fix crash when using const word as pointer and implement 2 missing assign codegen paths
|
2023-03-11 15:39:03 +01:00 |
|
Irmen de Jong
|
d76547ead4
|
don't crash on certain undefined symbols, give proper error instead
Also the error handlers in unit tests now de-duplicate messages just like the compiler itself does
|
2023-03-11 14:58:41 +01:00 |
|
Irmen de Jong
|
4600772e05
|
fix pokew mistake
|
2023-03-11 01:03:34 +01:00 |
|
Irmen de Jong
|
f350137a14
|
fix array in place assignments
fixes balls and snow examples amongst others
|
2023-03-10 04:07:50 +01:00 |
|
Irmen de Jong
|
6c34672549
|
array in-place assignment problem
|
2023-03-10 02:02:47 +01:00 |
|
Irmen de Jong
|
c968bacb01
|
fix pokew() crash with certain address expressions
|
2023-03-08 23:29:57 +01:00 |
|
Irmen de Jong
|
48fed4e6fb
|
slight tweak to codegenerator backend interface
|
2023-03-08 00:14:38 +01:00 |
|
Irmen de Jong
|
fd269453a4
|
todos
|
2023-03-04 14:14:01 +01:00 |
|
Irmen de Jong
|
540b3ae2f4
|
tweak BinaryExpression splitting
|
2023-02-28 21:45:38 +01:00 |
|
Irmen de Jong
|
d282a2d846
|
remove cx16.callrom() just use callfar
|
2023-02-23 23:02:56 +01:00 |
|
Irmen de Jong
|
ba9268a09e
|
added -varshigh compiler option to move BSS section.
Documented BSS a bit in the manual.
|
2023-02-22 22:44:29 +01:00 |
|
Irmen de Jong
|
fb9902c536
|
avoid const fold loop on const bool thing=true
fixes #97
|
2023-02-22 21:27:08 +01:00 |
|
Irmen de Jong
|
5318ba6c6e
|
shrink evalstack from 2 to 1 page
c64=$cf00-$cfff, x16: $0700-$07ff
|
2023-02-21 22:52:04 +01:00 |
|
Irmen de Jong
|
d9e4f39ddc
|
memset BSS section to zero all at once, less individual var=0 assigns
|
2023-02-21 00:26:21 +01:00 |
|
Irmen de Jong
|
435b9d8973
|
get rid of 'noreinit' option for now, because it resulted in unreliable code
|
2023-02-20 23:29:16 +01:00 |
|
Irmen de Jong
|
0ea70ba656
|
fix proper initialization of zeropagevars with 'noreinit'
|
2023-02-20 23:05:27 +01:00 |
|
Irmen de Jong
|
92a07b87d2
|
clearer
|
2023-02-20 02:32:36 +01:00 |
|
Irmen de Jong
|
c3c82282ba
|
reinitGlobals option is clearer than the inverse
|
2023-02-19 19:09:29 +01:00 |
|
Irmen de Jong
|
adc15c24ef
|
introduce bss segments
|
2023-02-19 18:12:37 +01:00 |
|
Irmen de Jong
|
9ca6860ffa
|
tweak
|
2023-02-19 15:08:16 +01:00 |
|
Irmen de Jong
|
aaf375a57b
|
move some utility methods into Pt Ast nodes itself
|
2023-02-16 22:45:35 +01:00 |
|
Irmen de Jong
|
c59df6ec20
|
optimize isZpVar
|
2023-02-16 00:41:20 +01:00 |
|
Irmen de Jong
|
5c3f41f64d
|
reintroduce explicit PtAugmentedAssign ast node
|
2023-02-15 22:54:32 +01:00 |
|
Irmen de Jong
|
b95608f68a
|
new common ICodeGeneratorBackend interface for all code generator classes
|
2023-02-12 23:52:54 +01:00 |
|
Irmen de Jong
|
f09bcf3fcf
|
Merge branch 'master' into codegen-on-new-ast
|
2023-02-12 17:36:18 +01:00 |
|
Irmen de Jong
|
d0b18dec8e
|
shuffle variable sorting around to attempt smaller compiled programs
|
2023-02-12 17:34:33 +01:00 |
|
Irmen de Jong
|
75d486b124
|
fix variable node casting
|
2023-02-12 17:04:58 +01:00 |
|
Irmen de Jong
|
4914609485
|
local varnames and fix uninitialized parents
|
2023-02-12 16:00:58 +01:00 |
|
Irmen de Jong
|
8f904f75bb
|
Merge branch 'master' into codegen-on-new-ast
|
2023-02-11 14:40:23 +01:00 |
|
Irmen de Jong
|
549c598f51
|
variables sorted in asm
|
2023-02-11 14:35:56 +01:00 |
|
Irmen de Jong
|
ed68d604d6
|
fix break as indirect jump
fix subroutine param scoped name
|
2023-02-11 01:21:27 +01:00 |
|
Irmen de Jong
|
30d20a453b
|
tweak SymbolTable and fix its unittest
|
2023-02-09 22:58:21 +01:00 |
|
Irmen de Jong
|
fe29d8a23f
|
tweak codegen of inline sub
|
2023-02-09 21:59:09 +01:00 |
|
Irmen de Jong
|
694d088160
|
some cleanups about asmsub return registers and types
|
2023-02-09 03:19:57 +01:00 |
|
Irmen de Jong
|
6aabbffc62
|
some cleanups
|
2023-02-09 02:34:18 +01:00 |
|
Irmen de Jong
|
c75b1581d2
|
lookup via new ST
|
2023-02-05 01:15:23 +01:00 |
|
Irmen de Jong
|
109e118aba
|
fix sub return register
|
2023-02-03 21:16:44 +01:00 |
|
Irmen de Jong
|
201b77d5b6
|
boolean vs byte cast fixing, and pointervar error
|
2023-02-02 00:57:20 +01:00 |
|
Irmen de Jong
|
a5ca08f33d
|
fix popCpuStack to load values into asmsub register params
|
2023-02-01 22:00:37 +01:00 |
|
Irmen de Jong
|
988a3e4446
|
group the three Pt nodes that represent a variable in the p8 source under single interface IPtVariable
|
2023-01-31 23:29:15 +01:00 |
|
Irmen de Jong
|
0f5cd22bb7
|
more codegen fixes
|
2023-01-31 22:57:26 +01:00 |
|
Irmen de Jong
|
2f5bed36b3
|
remove bool to ubyte typecasts
|
2023-01-31 01:25:44 +01:00 |
|
Irmen de Jong
|
5b6534bb28
|
fix symbol lookup in new ast and minor codegen errors
|
2023-01-31 00:18:21 +01:00 |
|
Irmen de Jong
|
e31e5b2477
|
got rid of PtScopeVarsDecls
|
2023-01-29 13:49:27 +01:00 |
|
Irmen de Jong
|
8a4979f44c
|
vm target 'zeropage' more robust
|
2023-01-29 12:47:12 +01:00 |
|
Irmen de Jong
|
e67464325f
|
fix missing symboltable entries for asmgen
|
2023-01-28 00:00:23 +01:00 |
|
Irmen de Jong
|
c78d1e3c39
|
implemented Pt findTarget and siblings
|
2023-01-27 01:51:21 +01:00 |
|
Irmen de Jong
|
48c9349ce9
|
working on codegen fixes
|
2023-01-25 01:57:25 +01:00 |
|
Irmen de Jong
|
117d848466
|
consolidate builtin function definitions into codeCore
|
2023-01-25 00:23:00 +01:00 |
|
Irmen de Jong
|
b2cb125bd4
|
more 6502 codegen on new Pt-AST.
|
2023-01-22 17:10:52 +01:00 |
|
Irmen de Jong
|
5e8f767642
|
6502 codegen on new Pt-AST.
|
2023-01-22 17:10:52 +01:00 |
|
Irmen de Jong
|
3718b9d768
|
less joins
|
2023-01-02 02:10:38 +01:00 |
|
Irmen de Jong
|
c25eb088ec
|
redo 8e730ef93d to avoid larger code generated
|
2023-01-01 23:43:33 +01:00 |
|
Irmen de Jong
|
3feb3e52f8
|
optimizing scoped names in zeropage
|
2022-12-31 03:57:51 +01:00 |
|
Irmen de Jong
|
8e730ef93d
|
optimizing scoped names more and fix scoping of identifier names in arrays (pointers) in SymbolTable
|
2022-12-31 03:20:20 +01:00 |
|
Irmen de Jong
|
e0913a39ab
|
optimizing
|
2022-12-30 18:50:45 +01:00 |
|
Irmen de Jong
|
a04839dd6b
|
vm: add property for custom breakpoint handler
|
2022-12-30 15:10:13 +01:00 |
|
Irmen de Jong
|
002006517a
|
rewrite bool=bool^1 into bool=not bool
|
2022-12-29 19:42:38 +01:00 |
|
Irmen de Jong
|
ded9ada9bc
|
allow "not xx in array" expression in 6502 codegen
fix compiler crash on certain bool to byte casts
|
2022-12-23 17:07:34 +01:00 |
|
Irmen de Jong
|
578969c34c
|
optimize redundant rts/bra or rts/jmp generation in when statement
|
2022-12-10 17:21:15 +01:00 |
|
Irmen de Jong
|
ca1089b881
|
optimized codegen for logical expressions with simple right operand (such as c64.READST() & $40 )
|
2022-12-06 20:23:56 +01:00 |
|
Irmen de Jong
|
a82b2da16e
|
Fix some FP related assignment issues in 6502 codegen.
|
2022-12-04 13:03:38 +01:00 |
|
Irmen de Jong
|
f2273c0acc
|
fix several FP rom routine addresses on cx16.
|
2022-12-03 19:56:54 +01:00 |
|
Irmen de Jong
|
5e896cf582
|
preparing to add Golden RAM
|
2022-12-03 00:21:31 +01:00 |
|
Irmen de Jong
|
10760a53a8
|
optimize cmp word equal/notequal
|
2022-11-29 20:14:35 +01:00 |
|
Irmen de Jong
|
eee805183c
|
don't overwrite temp vars in complex comparison expressions. Fixes #89
|
2022-11-29 04:13:25 +01:00 |
|
Irmen de Jong
|
b8fb391022
|
- ir codegen now allows subroutine having the same name as its block
this is not possible for the 6502 codegen due to 64tass scoping limitation
|
2022-11-28 21:54:33 +01:00 |
|
Irmen de Jong
|
ec64a68a71
|
fixed compiler crash: unsigned = (-(unsigned as word) as uword)
|
2022-11-27 17:25:47 +01:00 |
|
Irmen de Jong
|
db55562f6a
|
fixed adpcm playback
|
2022-11-27 16:36:30 +01:00 |
|
Irmen de Jong
|
e2f20ebf94
|
fix crash on empty conditional branch statement (if_cc { } )
|
2022-11-23 02:14:48 +01:00 |
|
Irmen de Jong
|
922033c1b2
|
main block element order now remains the same as in source
|
2022-11-16 00:32:00 +01:00 |
|
Irmen de Jong
|
836a2700f2
|
func(x>>1) no longer uses slow stack eval
|
2022-11-15 02:49:40 +01:00 |
|
Irmen de Jong
|
562d722ad5
|
codegen: added missing codegen for float array inplace modification
|
2022-11-03 20:08:46 +01:00 |
|
Irmen de Jong
|
224f490455
|
Merge branch 'master' into labeledchunks
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/AssignmentGen.kt
# codeGenIntermediate/src/prog8/codegen/intermediate/ExpressionGen.kt
# examples/test.p8
|
2022-10-29 18:26:09 +02:00 |
|
Irmen de Jong
|
434515d957
|
fix: array[x] = ~array[x] no longer crashes the codegen
|
2022-10-27 23:56:38 +02:00 |
|
Irmen de Jong
|
094f7803b7
|
fix: array[x] = -array[x] no longer crashes the codegen
|
2022-10-27 23:20:40 +02:00 |
|
Irmen de Jong
|
b0c7bad391
|
fix: array[x] = -value no longer crashes the codegen
|
2022-10-27 21:58:37 +02:00 |
|
Irmen de Jong
|
e9a4a905ef
|
preparing to fix the array indexing compiler issue
|
2022-10-26 23:53:17 +02:00 |
|
Irmen de Jong
|
76428b16f0
|
Merge branch 'master' into labeledchunks
# Conflicts:
# codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt
# docs/source/todo.rst
# examples/test.p8
# virtualmachine/src/prog8/vm/VirtualMachine.kt
|
2022-10-23 12:19:02 +02:00 |
|
Irmen de Jong
|
0d7b14e2d8
|
fix crash when assigning certain memory read to word variable. Fixes #82
|
2022-10-23 11:57:23 +02:00 |
|
Irmen de Jong
|
e94bf4c63c
|
replace rnd()/rndw() builtin functions by regular routines in math module
|
2022-10-22 17:02:43 +02:00 |
|
Irmen de Jong
|
6fc89607d3
|
ir: moving to labeled chunks, no more IRLabel nodes
|
2022-10-07 00:34:56 +02:00 |
|
Irmen de Jong
|
af6be44676
|
ir: adding register usage inspections
fix compiler problems with untrimmed inlined asm, and when only a single return statement is present in a subroutine
|
2022-09-30 20:25:00 +02:00 |
|
Irmen de Jong
|
e7a3a89bfb
|
fix windows issue
|
2022-09-27 22:41:48 +02:00 |
|
Irmen de Jong
|
06cf2e0bd7
|
vm: fix memory slabs (bsieve example)
|
2022-09-27 16:32:44 +02:00 |
|
Irmen de Jong
|
1d65d63bd9
|
ir: making sure all names are scoped properly. textelite now runs in vm
|
2022-09-25 18:02:35 +02:00 |
|
Irmen de Jong
|
b1e4347e10
|
fix compiler crash sometimes when casting byte to word
|
2022-09-22 13:00:47 +02:00 |
|
Irmen de Jong
|
97aa91c75e
|
removed 16 bits sin/cos routines from math library (sin16, sin16r etc)
|
2022-09-22 12:55:00 +02:00 |
|
Irmen de Jong
|
d07d00fa41
|
Join codeAst and codeCore modules
|
2022-09-19 17:28:18 +02:00 |
|
Irmen de Jong
|
fc0a0105b3
|
move memoryslab administration from allocator to symboltable
|
2022-08-21 19:48:56 +02:00 |
|
Irmen de Jong
|
40aa733ea7
|
clearer name
|
2022-08-15 20:55:35 +02:00 |
|
Irmen de Jong
|
f249ccd414
|
added asm optimization for same pointer index
|
2022-08-14 12:50:46 +02:00 |
|
Irmen de Jong
|
44ee4b989f
|
optimize code for logical expressions more if right operand is simple
|
2022-08-12 00:49:40 +02:00 |
|
Irmen de Jong
|
18790d867c
|
optimize conditional expression WORD & $ff00 to just msb(WORD)&$ff
|
2022-08-12 00:21:44 +02:00 |
|
Irmen de Jong
|
d6b8936376
|
fix mkword(@(ptr), 0) wrong asm
|
2022-08-11 23:01:19 +02:00 |
|
Irmen de Jong
|
2d34fdd28f
|
in a block marked option force_output, make all subroutines in asm use .block rather than .proc
this fixes some obscure assembly issues where subroutines were omitted from the output program by 64tass
|
2022-08-10 21:28:40 +02:00 |
|
Irmen de Jong
|
68abda1219
|
fix a few small compiler errors (removing functioncall, removing block, assigning virtual register return value)
|
2022-08-09 23:38:29 +02:00 |
|
Irmen de Jong
|
f778f08f76
|
tweak
|
2022-08-08 21:09:49 +02:00 |
|
Irmen de Jong
|
4644c9b621
|
got rid of GoSub ast node and codegen complexity related to that.
sometimes programs get smaller, sometimes bigger.
|
2022-08-07 03:24:20 +02:00 |
|
Irmen de Jong
|
00b717cde8
|
tweak
|
2022-08-04 18:35:10 +02:00 |
|
Irmen de Jong
|
310219e5d7
|
make sure memory slabs block is at the bottom of the asm file to not allocate needless space in the resulting prg
|
2022-07-31 15:37:36 +02:00 |
|
Irmen de Jong
|
a0deb463c9
|
optimized codegen for some equality comparison expressions and some logical expressions
|
2022-07-31 15:25:54 +02:00 |
|
Irmen de Jong
|
046dceb5c2
|
added optimized case for signed division by 2
|
2022-07-24 13:59:35 +02:00 |
|
Irmen de Jong
|
dcc1f00048
|
fix rounding errors in signed divide by power-of-two
The optimized bit-shifting division is removed (for now)
|
2022-07-24 12:34:55 +02:00 |
|
Irmen de Jong
|
5189eaca36
|
move the vm unit tests to codeGenVirtual module and remove virtualmachine dependency in the compiler module
|
2022-07-17 12:56:22 +02:00 |
|
Irmen de Jong
|
f690f58bd4
|
callfar() now accepts a variable as address, so it can be used to indirect JSR to a subroutine whose address is not fixed. ('goto' already could indirect JMP to a variable address.)
|
2022-07-14 19:29:59 +02:00 |
|
Irmen de Jong
|
2d600da8b6
|
fix codegen crash on certain nested typecast
|
2022-07-13 22:24:31 +02:00 |
|
Irmen de Jong
|
7a26646e1b
|
tweak bool type handling
|
2022-07-11 02:08:12 +02:00 |
|
Irmen de Jong
|
1163543a98
|
fix bool param lookup problem
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
65daf29acd
|
fix compiler crash related to word types in certain comparison expressions
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
298b25cf7d
|
fix compiler crash on certain typecasting assignment
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
41f4e22a17
|
introduce BOOL type
|
2022-07-07 22:23:56 +02:00 |
|
Irmen de Jong
|
288c57c144
|
ack to allow user to override the following two with command line redefinition:
|
2022-07-07 22:16:08 +02:00 |
|
Irmen de Jong
|
b41779bd02
|
added -D command line option to define symbols in the assembly file
|
2022-07-06 23:40:36 +02:00 |
|
Irmen de Jong
|
e1c77ce236
|
fix pop() name scoping
|
2022-07-02 23:27:08 +02:00 |
|
Irmen de Jong
|
965340ff90
|
logical and/or/xor/not all replaced by bitwise &,|,^,~ (ast, codegens)
this also fixed some invalid outcomes of logical expressions!
|
2022-07-02 00:38:17 +02:00 |
|
Irmen de Jong
|
fb989ae62f
|
cx16: reset rom/ram/monitor banks at program exit to sane values.
|
2022-07-01 00:14:38 +02:00 |
|
Irmen de Jong
|
4b358abbb7
|
"not" operator removed from ast and codegen (it's been replaced with x==0 as equivalent)
|
2022-06-29 01:13:08 +02:00 |
|
Irmen de Jong
|
ef92451d1a
|
fix logical expressions on arbitrary values, for now with boolean() around the operands
|
2022-06-28 01:18:36 +02:00 |
|
Irmen de Jong
|
bb1cda0916
|
fix: boolean values of terms in logical expressions are now properly evaluated
|
2022-06-26 23:55:34 +02:00 |
|
Irmen de Jong
|
eea09f4de5
|
fix invalid asm label sometimes generated for multiple loops in same subroutine
|
2022-06-24 02:26:45 +02:00 |
|
Irmen de Jong
|
bda016bb3b
|
optimized 6502 codegen for logical expressions
|
2022-06-15 22:17:15 +02:00 |
|
Irmen de Jong
|
cc174b7b85
|
added boolean() builtin function and use it to get rid of !=0 comparisons
|
2022-06-14 23:34:45 +02:00 |
|
Irmen de Jong
|
bf9d120081
|
logical operators now always return a boolean byte result, instead of sometimes word type as well
(preparing for codegen simplifications for these)
|
2022-06-13 01:37:16 +02:00 |
|
Irmen de Jong
|
775c85fc18
|
don't swap operands that would change function evaluation order + vm: fix label casing error
|
2022-06-13 00:25:45 +02:00 |
|
Irmen de Jong
|
5a756aaed9
|
Pipe expression "|>" removed from the language
|
2022-06-12 18:41:42 +02:00 |
|
Irmen de Jong
|
c6e92ecac4
|
some code cleanup
|
2022-06-12 16:15:08 +02:00 |
|
Irmen de Jong
|
710f27afa9
|
bump library versions
|
2022-06-09 22:44:17 +02:00 |
|
Irmen de Jong
|
0a65dfdd10
|
optimized codegen for some more simple expressions with +/-
|
2022-06-07 22:30:08 +02:00 |
|
Irmen de Jong
|
3075578245
|
optimized codegen for assigning value or variable to indexed pointer. (6502)
|
2022-06-06 18:30:19 +02:00 |
|
Irmen de Jong
|
b042b7705e
|
fix invalid removal of repeated assignments.
|
2022-06-06 17:27:06 +02:00 |
|
Irmen de Jong
|
d56eb397f9
|
fix codegen for rol/ror on pointer indexed
|
2022-06-06 16:07:45 +02:00 |
|
Irmen de Jong
|
3054a1d32d
|
api change: removed swap() builtin function (too complex in codegen for little used function)
|
2022-06-06 16:01:11 +02:00 |
|
Irmen de Jong
|
f70b914779
|
fix optimized codegen for 2 arg functions, sometimes was passing wrong arg value due to register overwriting
|
2022-06-06 13:21:45 +02:00 |
|
Irmen de Jong
|
9e3e2ff81a
|
fix assembly generation error when pipe character is part of string literal
|
2022-06-04 22:25:51 +02:00 |
|
Irmen de Jong
|
dbb92881a1
|
fixed X register corruption in some cases of rol() and ror()
|
2022-06-04 21:10:48 +02:00 |
|
Irmen de Jong
|
10bf7f5d07
|
fix: again gives proper name redefinition errors in same scope
|
2022-06-04 20:15:46 +02:00 |
|
Irmen de Jong
|
8618ba1b60
|
fix 6502 expression codegen for pointer indexing
|
2022-06-04 18:46:16 +02:00 |
|
Irmen de Jong
|
3c8c44155d
|
vm: loadix instruction added for indirect addressing via pointer
|
2022-06-04 18:07:57 +02:00 |
|
Irmen de Jong
|
2002412026
|
optimized codegen for pointer indexing (read expressions)
|
2022-06-04 17:20:17 +02:00 |
|
Irmen de Jong
|
73a3a61729
|
swap() checks for unsupported code gen
|
2022-06-03 23:41:24 +02:00 |
|
Irmen de Jong
|
5fe6aa2800
|
fix swap() code for pointervars
|
2022-06-03 23:13:35 +02:00 |
|
Irmen de Jong
|
ba614801ee
|
cleanup
|
2022-05-22 23:11:22 +02:00 |
|
Irmen de Jong
|
0bf00d1ca4
|
c64/c128 targets: perform cleanup at program exit such as re-enabling run-stop key and character set switching.
|
2022-05-15 16:44:26 +02:00 |
|
Irmen de Jong
|
7c121bfc01
|
first steps to support multiple args in pipe expressions
|
2022-05-07 19:00:47 +02:00 |
|
Irmen de Jong
|
da01a5b4dc
|
vm: implement float to integer cast, any, all, reverse
|
2022-05-04 22:08:21 +02:00 |
|
Irmen de Jong
|
0f9e87d7bb
|
fixed compiler crash when casting float to integer, fixed float to int cast value error on cx16
|
2022-05-03 23:43:38 +02:00 |
|
Irmen de Jong
|
b32641db87
|
remove syscall() builtin functions
vm code can do this via inline assembly
|
2022-05-01 00:41:30 +02:00 |
|
Irmen de Jong
|
7844ace934
|
vm: implementing floating-point
|
2022-04-29 22:27:02 +02:00 |
|
Irmen de Jong
|
cf50e4f6ec
|
vm: printing of numbers now via conv module.
assigning strings now converted to strcopy function call in the compiler ast.
|
2022-04-23 02:15:51 +02:00 |
|
Irmen de Jong
|
7eea97d741
|
- floats: remove all floating point builtin functions and move them to the floats module instead
|
2022-04-22 00:45:54 +02:00 |
|
Irmen de Jong
|
88b55ab93e
|
vm: add abs() and fix 6502 abs() code.
|
2022-04-18 21:20:17 +02:00 |
|
Irmen de Jong
|
7dbff5b9e6
|
abs: remove support for floats. Use floats.fabs() instead.
this solves: can't use abs() etc in pipe expression because return type depends on argument type
|
2022-04-14 00:38:31 +02:00 |
|
Irmen de Jong
|
220246278a
|
removed sum(), max(), min(). abs() now always returns uword type.
This greatly simplifies internal handling of builtin functions by always having one fixed return type.
|
2022-04-14 00:21:16 +02:00 |
|
Irmen de Jong
|
bf7f4bba7b
|
doc
|
2022-04-13 20:43:07 +02:00 |
|
Irmen de Jong
|
ab1766a559
|
moved all *integer* builtin trig functions (sin8u, cos8u etc) as regular asmsubs in math module
|
2022-04-13 00:27:35 +02:00 |
|
Irmen de Jong
|
b6eb343234
|
moving string escaping out of antlr project
|
2022-04-10 17:31:30 +02:00 |
|
Irmen de Jong
|
ae45ce517e
|
cleanups
|
2022-04-03 17:33:50 +02:00 |
|
Irmen de Jong
|
c6cf330e70
|
fix bug in codegen for containment check in bytearrays and strings
|
2022-04-01 20:46:28 +02:00 |
|
Irmen de Jong
|
bb1bf6a88c
|
working on vm
|
2022-03-28 00:40:15 +02:00 |
|
Irmen de Jong
|
3b6e7eccdd
|
simplified containment check, only possible on string and arrays (as per the docs)
|
2022-03-27 16:59:55 +02:00 |
|
Irmen de Jong
|
ed30108961
|
removed '**' power-operator. Use floats.pow() instead.
|
2022-03-27 13:16:34 +02:00 |
|
Irmen de Jong
|
27f6d47efa
|
working on vm codegen
|
2022-03-24 23:26:57 +01:00 |
|
Irmen de Jong
|
7b27d270a2
|
gosub only uses an identifier
|
2022-03-22 20:53:06 +01:00 |
|
Irmen de Jong
|
ff57c5e9d3
|
working on vm and new ast
|
2022-03-21 01:36:11 +01:00 |
|
Irmen de Jong
|
7d2bf892b1
|
added start of virtual machine compilation target
|
2022-03-19 00:57:35 +01:00 |
|
Irmen de Jong
|
a99e77093f
|
added syscall() builtin functions (only useful for experimental code gen)
|
2022-03-17 01:19:58 +01:00 |
|
Irmen de Jong
|
92737bb695
|
better handling of loadAddress
|
2022-03-13 16:21:02 +01:00 |
|
Irmen de Jong
|
9b81955544
|
optimizing new Ast
|
2022-03-13 11:49:07 +01:00 |
|
Irmen de Jong
|
40e9fba312
|
working on new Ast and XML export to test it
|
2022-03-12 22:38:16 +01:00 |
|
Irmen de Jong
|
3961f26635
|
consolidating modules
|
2022-03-11 20:45:39 +01:00 |
|
Irmen de Jong
|
e51c274a18
|
reducing dependencies
|
2022-03-11 20:32:35 +01:00 |
|
Irmen de Jong
|
e75d0c58a9
|
reducing dependencies
|
2022-03-10 23:46:43 +01:00 |
|
Irmen de Jong
|
9a798360f4
|
introduced codeAst and codeCore modules to reduce dependencies
|
2022-03-10 22:38:16 +01:00 |
|
Irmen de Jong
|
844ad09464
|
reducing dependencies
|
2022-03-10 21:36:51 +01:00 |
|
Irmen de Jong
|
abcdd331db
|
started with a simulator
|
2022-03-10 21:23:00 +01:00 |
|
Irmen de Jong
|
e7c4bf5ebf
|
reducing dependencies
|
2022-03-10 21:17:31 +01:00 |
|
Irmen de Jong
|
546a416f7e
|
reducing dependencies
|
2022-03-10 20:57:36 +01:00 |
|
Irmen de Jong
|
251b6fcf70
|
reducing dependencies
|
2022-03-10 02:09:34 +01:00 |
|
Irmen de Jong
|
ab1fffb721
|
reducing dependencies
|
2022-03-10 01:41:42 +01:00 |
|
Irmen de Jong
|
da352a322c
|
reducing dependencies
|
2022-03-10 01:27:27 +01:00 |
|
Irmen de Jong
|
7d20458e82
|
fixed arrayliteral regression
|
2022-03-10 01:02:40 +01:00 |
|
Irmen de Jong
|
5a54066f81
|
unravel more dependency of SymbolTable on the ASt nodes (Expression), and fix initializing zp-allocated array
|
2022-03-09 01:42:05 +01:00 |
|
Irmen de Jong
|
9872f43cbf
|
repeat-forever loop is now replaced by label+jump
|
2022-03-08 03:25:34 +01:00 |
|
Irmen de Jong
|
2b6f5dbd59
|
cleanup st use at variable asm generation
|
2022-03-06 19:50:15 +01:00 |
|
Irmen de Jong
|
a72d58cdf9
|
updated 3rd party library versions
|
2022-03-05 15:28:22 +01:00 |
|
Irmen de Jong
|
067283834a
|
got rid of old IVariablesAndConsts object
|
2022-03-05 14:40:41 +01:00 |
|
Irmen de Jong
|
cf362c4a61
|
getting rid of old IVariablesAndConsts object
|
2022-03-05 14:11:58 +01:00 |
|
Irmen de Jong
|
496245c801
|
working on symboltable
|
2022-03-05 12:10:20 +01:00 |
|
Irmen de Jong
|
1d740c7c36
|
removed need to store ast scope on each zp allocated var, now uses scoped name to find them
|
2022-03-04 22:58:05 +01:00 |
|
Irmen de Jong
|
2812736ae5
|
preparing version 7.9
|
2022-03-03 00:42:53 +01:00 |
|
Irmen de Jong
|
6f87f8706c
|
can only call unary functions in pipe at this time
|
2022-03-02 23:16:40 +01:00 |
|
Irmen de Jong
|
fc1c3c6808
|
working on altered pipe syntax
|
2022-03-02 20:58:38 +01:00 |
|
Irmen de Jong
|
96ba895b84
|
working on altered Pipe syntax
|
2022-02-27 02:42:28 +01:00 |
|
Irmen de Jong
|
df35dfe3bf
|
added atari XEX output format with default $2000 load address
|
2022-02-26 15:36:22 +01:00 |
|
Irmen de Jong
|
6cce47b2f1
|
fix launching emulator for atari target
|
2022-02-24 23:22:02 +01:00 |
|
Irmen de Jong
|
eeb3c968d6
|
streamline handling of launcher type and program load address. %address is now required if not using a basic-launcher.
|
2022-02-22 22:43:14 +01:00 |
|
Irmen de Jong
|
6a0551cea1
|
added 'atari' compiler target beginnings (Atari 800 XL)
also default char and string encoding now taken from compiler target
|
2022-02-22 00:52:35 +01:00 |
|
Irmen de Jong
|
064a8e785c
|
cleanups
|
2022-02-21 03:26:17 +01:00 |
|
Irmen de Jong
|
60b2c44a44
|
fix returntype handling of builtinfunctions, fix errors in pipe expressions
|
2022-02-21 01:44:29 +01:00 |
|
Irmen de Jong
|
c4fe3ecc0a
|
refactor
|
2022-02-20 22:04:18 +01:00 |
|
Irmen de Jong
|
2f18a8f6d0
|
introduced BuiltinFunctionCall (expression) node for codegen
|
2022-02-20 02:48:27 +01:00 |
|
Irmen de Jong
|
7a2164b4d0
|
introduced BuiltinFunctionCallStatement node for codegen
|
2022-02-18 23:27:11 +01:00 |
|
Irmen de Jong
|
0a43eae184
|
rework registerArgsViaStackEvaluation to use cpu hardware stack instead
|
2022-02-18 22:38:00 +01:00 |
|
Irmen de Jong
|
3117e2b2a3
|
more tweaks
|
2022-02-18 01:25:08 +01:00 |
|
Irmen de Jong
|
7aa807ec7f
|
proper error if attempting to do a containment check against non const range, and some cleanup in asmgen
|
2022-02-16 00:39:19 +01:00 |
|
Irmen de Jong
|
2725c4ad4d
|
slight tweaks to zp and allocator
|
2022-02-12 00:15:52 +01:00 |
|
Irmen de Jong
|
b47fc1c020
|
renames of some Ast node classes
|
2022-02-11 00:34:36 +01:00 |
|
Irmen de Jong
|
f95fe8f1da
|
note about removing VarDecls
|
2022-02-10 23:20:19 +01:00 |
|
Irmen de Jong
|
bd0dee5db5
|
cleanup
|
2022-02-10 22:22:50 +01:00 |
|
Irmen de Jong
|
c13b7fd883
|
report free/occupied Zeropage space at end of compilation
|
2022-02-10 21:59:44 +01:00 |
|
Irmen de Jong
|
f7e74b3088
|
naming
|
2022-02-10 03:18:56 +01:00 |
|
Irmen de Jong
|
41b1c80492
|
label name from memory() no longer interned as string var
|
2022-02-10 00:45:20 +01:00 |
|
Irmen de Jong
|
e5d7316e5d
|
streamlining non-zpvars asmgen using new mechanism
|
2022-02-10 00:09:09 +01:00 |
|
Irmen de Jong
|
b043c3a6da
|
streamlining vars asmgen using new mechanism
|
2022-02-09 21:58:25 +01:00 |
|
Irmen de Jong
|
98b2855b9c
|
cleanups
|
2022-02-09 16:35:52 +01:00 |
|
Irmen de Jong
|
f3c52c409f
|
variable zp allocation now only done in the allocator
|
2022-02-08 23:44:21 +01:00 |
|
Irmen de Jong
|
1307bdc612
|
more cleanups to the allocator
|
2022-02-08 22:46:49 +01:00 |
|
Irmen de Jong
|
8c2e6971fc
|
start using vars instead of callgraph (2)
|
2022-02-08 21:09:00 +01:00 |
|
Irmen de Jong
|
1903990f30
|
start using vars instead of callgraph
|
2022-02-08 20:40:10 +01:00 |
|
Irmen de Jong
|
7d67005709
|
more rewrite variable allocation
|
2022-02-08 20:40:10 +01:00 |
|
Irmen de Jong
|
9acc2f92d1
|
start to rewrite variable allocation
|
2022-02-08 20:40:10 +01:00 |
|
Irmen de Jong
|
1635612430
|
tiny tweak in asm optimizer
|
2022-02-08 02:19:50 +01:00 |
|
Irmen de Jong
|
abda837d2f
|
split program structure codegen out of AsmGen into separate class ProgramGen
|
2022-02-07 00:12:25 +01:00 |
|
Irmen de Jong
|
101fb0b8aa
|
some naming changes and cleanups
|
2022-02-06 23:14:44 +01:00 |
|
Irmen de Jong
|
d2309b8114
|
introducing IVariableAllocation (WIP)
|
2022-02-06 18:57:23 +01:00 |
|
Irmen de Jong
|
6bdd81623f
|
cleaning up AsmGen interface
|
2022-02-06 17:07:03 +01:00 |
|
Irmen de Jong
|
8ae3bad6f7
|
fix rts in empty asmsub
|
2022-02-06 05:05:58 +01:00 |
|
Irmen de Jong
|
77de99b383
|
rts-check for non-inlined subroutines + var init adjustment when noreinit, moved out of codegen
|
2022-02-06 04:03:03 +01:00 |
|
Irmen de Jong
|
312949f336
|
added experimental codegen backend option
|
2022-02-05 21:42:03 +01:00 |
|
Irmen de Jong
|
30e1c3307c
|
simplify SourceCode: just read the full text immediately. Also optimized imports.
|
2022-02-05 03:50:54 +01:00 |
|
Irmen de Jong
|
0e824c35cc
|
Merge pull request #73 from akumanatt/master
Codegen and runtime library optimizations
|
2022-02-05 02:21:53 +01:00 |
|
Irmen de Jong
|
548374ac2d
|
fix: do proper sign exension when multiplying signed word and byte vars
|
2022-02-05 01:52:13 +01:00 |
|
Natt Akuma
|
7c70c79a84
|
Optimize in-place word subtraction and negation
|
2022-02-04 21:21:06 +07:00 |
|
Natt Akuma
|
73dfb5f443
|
Optimize sign extension to AY
|
2022-02-04 00:59:44 +07:00 |
|
Irmen de Jong
|
ddf96943f0
|
remove Nop ast node.
|
2022-01-31 22:36:10 +01:00 |
|
Irmen de Jong
|
e773be2f58
|
remove no longer needed asmSymbol scoping prefixing, now asmSymbolName are identical to asmVarName
|
2022-01-31 01:47:22 +01:00 |
|
Irmen de Jong
|
1815cb1bc3
|
fixed bug in assembly optimizer removing too many instructions
|
2022-01-28 15:19:08 +01:00 |
|
Irmen de Jong
|
06128b5d07
|
optimize word&=$ff00 and word&=$00ff
|
2022-01-28 13:40:28 +01:00 |
|
Irmen de Jong
|
990c8e1f18
|
split out 6502 codegen module from various compilertargets module.
|
2022-01-28 00:32:09 +01:00 |
|