"not" no longer in LogicalOperators because it makes assembler generate invalid code somehow

This commit is contained in:
Irmen de Jong 2022-06-30 22:49:27 +02:00
parent f675dbc726
commit 7901ec2a64
2 changed files with 6 additions and 4 deletions

View File

@ -3,7 +3,7 @@ package prog8.code.core
val AssociativeOperators = setOf("+", "*", "&", "|", "^", "or", "and", "xor", "==", "!=") val AssociativeOperators = setOf("+", "*", "&", "|", "^", "or", "and", "xor", "==", "!=")
val ComparisonOperators = setOf("==", "!=", "<", ">", "<=", ">=") val ComparisonOperators = setOf("==", "!=", "<", ">", "<=", ">=")
val AugmentAssignmentOperators = setOf("+", "-", "/", "*", "&", "|", "^", "<<", ">>", "%", "and", "or", "xor") val AugmentAssignmentOperators = setOf("+", "-", "/", "*", "&", "|", "^", "<<", ">>", "%", "and", "or", "xor")
val LogicalOperators = setOf("and", "or", "xor", "not") val LogicalOperators = setOf("and", "or", "xor") // not has been replaced by == 0
val BitwiseOperators = setOf("&", "|", "^") val BitwiseOperators = setOf("&", "|", "^")
fun invertedComparisonOperator(operator: String) = fun invertedComparisonOperator(operator: String) =

View File

@ -3,9 +3,10 @@ TODO
For next release For next release
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
- petaxian roller.p8 line 49 (also see test.p8) generates large code compared to 8.2 - cx16 programs seem to poke 0, 56 at exit?
- assembling hello4.asm prints stray characters in the string
- assembler incorrectly assembles hello.asm now (crash when run) - petaxian roller.p8 line 49 (also see test.p8) generates large code compared to 8.2
- code gen for if statements has become inefficient? vm/6502? - code gen for if statements has become inefficient? vm/6502?
if not diskio.iteration_in_progress or not num_bytes if not diskio.iteration_in_progress or not num_bytes
@ -24,7 +25,8 @@ For next release
can do this for instance by replacing and/or/xor with their bitwise versions &, |, ^ can do this for instance by replacing and/or/xor with their bitwise versions &, |, ^
- ...or: 6502: fix logical and/or/xor routines to just be bitwise routines. - ...or: 6502: fix logical and/or/xor routines to just be bitwise routines.
- check all examples if they still work, maybe we find bug for...: - LogicalOperators can't contain "not" because that will make the assemlber create invalid
code for hello.asm (crash when ran). Why? Should be fixed?
- compiling logical.p8 to virtual with optimization generates a lot larger code as without optimizations. - compiling logical.p8 to virtual with optimization generates a lot larger code as without optimizations.
this is not the case for the 6502 codegen. this is not the case for the 6502 codegen.