%output basic %import c64lib ~ main { var .byte v1t = true var .byte v1f = false var .word v2t = true var .word v2f = false var .float v3t = true var .float v3f = false var .text v4t = true var .text v4f = false var .array(3) v5t = true var .array(3) v5f = false var .array(10) v6t = true var .array(10) v6f = false var .wordarray(3) v7t = true var .wordarray(3) v7f = false var .wordarray(10) v8t = true var .wordarray(10) v8f = false var .matrix(2,2) v9t = true var .matrix(2,2) v9f = false var .matrix(5,5) v10t = true var .matrix(5,5) v10f = false const .byte c1t=true const .byte c1f=false const .word c2t=true const .word c2f=false const .float c3t=true const .float c3f=false memory border = $d020 start: %breakpoint abc,def X += border XY += border ; @todo .word augassign register XY -= 234+3 ; @todo .word augassign register X += [c2f] XY += [c2f] Y += [XY] XY+=255 XY+=254 XY+=253 XY-=255 XY-=254 XY-=253 v3t++ ;v3t+=1 ; @todo non-reg augassign ;v3t+=1 ; @todo? (optimize) join with previous ;v3t+=0 ; is removed by optimizer ;v3t+=1 ; @todo? (optimize) join with previous ;v3t+=1 ; @todo? (optimize) join with previous ;v3t=2.23424 ; @todo store as constant float with generated name, replace value node ;v3t=2.23411 ; @todo store as constant float with generated name, replace value node ;v3t=1.23411 + 1; @todo store as constant float with generated name, replace value node ;v3t+=2.23424 ; @todo store as constant float with generated name, replace value node ;v3t+=2.23424 ; @todo store as constant float with generated name, replace value node ;v3t+=2.23411 ; @todo store as constant float with generated name, replace value node ;v3t+=2.23411 ; @todo store as constant float with generated name, replace value node ;v3t=2.23424 * v3t ; @todo store as constant float with generated name, replace value node ;XY*=2 ; @todo operator ;XY*=3 ; @todo operator X=3 ; @todo optimize consecutive assignments X=4 X=5 X=A=6 A=X=6 X=A=6 X=A=9 X=A=10 v3t=1 ; @todo optimize consecutive assignments v3t=2 v3t=3 border = 0 ; @todo do not optimize consecucutive assignments to a memory var border = 1 border = 2 ;XY=XY/0 ; @todo zerodiv (during expression to code generation) @todo operator ;XY=XY//0 ; @todo zerodiv (during expression to code generation) @todo operator ;XY*=2.23424 ; @todo store as constant float with generated name, replace value node @todo operator ;XY*=2.23424 * v3t ; @todo store as constant float with generated name, replace value node @todo operator ;v3t*=2.23424 * v3t ; @todo store as constant float with generated name, replace value node @todo operator, non-register A++ X-- A+=1 X-=2 [AX]++ [AX .byte]++ [AX .word]++ [AX .float]++ [$ccc0]++ [$ccc0 .byte]++ [$ccc0 .word]++ [$ccc0 .float]++ A+=2 A+=3 XY+=6 XY+=222 XY+=11 return 44 }