refactor byte '==', '!=', '<' and '>' codegen 2

This commit is contained in:
Irmen de Jong 2021-03-15 23:08:30 +01:00
parent 38e40084f1
commit b630fae580

View File

@ -374,24 +374,20 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
return return
} else { } else {
if (left is IdentifierReference) { if (left is IdentifierReference) {
val name = asmgen.asmVariableName(left) return if(rightConstVal.number.toInt()!=0) {
if(rightConstVal.number.toInt()!=0) asmgen.assignExpressionToRegister(left, RegisterOrPair.A)
asmgen.out(""" asmgen.out(" cmp #${rightConstVal.number} | bcs $jumpIfFalseLabel")
lda $name }
cmp #${rightConstVal.number}
bcs $jumpIfFalseLabel""")
else else
asmgen.jmp(jumpIfFalseLabel) asmgen.jmp(jumpIfFalseLabel)
return
} }
else if (left is DirectMemoryRead) { else if (left is DirectMemoryRead) {
if(rightConstVal.number.toInt()!=0) { return if(rightConstVal.number.toInt()!=0) {
translateDirectMemReadExpression(left, false) translateDirectMemReadExpression(left, false)
asmgen.out(" cmp #${rightConstVal.number} | bcs $jumpIfFalseLabel") asmgen.out(" cmp #${rightConstVal.number} | bcs $jumpIfFalseLabel")
} }
else else
asmgen.jmp(jumpIfFalseLabel) asmgen.jmp(jumpIfFalseLabel)
return
} }
} }
} }
@ -528,24 +524,21 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
return return
} else { } else {
if (left is IdentifierReference) { if (left is IdentifierReference) {
val name = asmgen.asmVariableName(left) asmgen.assignExpressionToRegister(left, RegisterOrPair.A)
if(rightConstVal.number.toInt()!=0) return if(rightConstVal.number.toInt()!=0)
asmgen.out(""" asmgen.out("""
lda $name
cmp #${rightConstVal.number} cmp #${rightConstVal.number}
bcc $jumpIfFalseLabel bcc $jumpIfFalseLabel
beq $jumpIfFalseLabel""") beq $jumpIfFalseLabel""")
else else
asmgen.out(" lda $name | beq $jumpIfFalseLabel") asmgen.out(" beq $jumpIfFalseLabel")
return
} }
else if (left is DirectMemoryRead) { else if (left is DirectMemoryRead) {
translateDirectMemReadExpression(left, false) translateDirectMemReadExpression(left, false)
if(rightConstVal.number.toInt()!=0) return if(rightConstVal.number.toInt()!=0)
asmgen.out(" cmp #${rightConstVal.number} | bcc $jumpIfFalseLabel | beq $jumpIfFalseLabel") asmgen.out(" cmp #${rightConstVal.number} | bcc $jumpIfFalseLabel | beq $jumpIfFalseLabel")
else else
asmgen.out(" beq $jumpIfFalseLabel") asmgen.out(" beq $jumpIfFalseLabel")
return
} }
} }
} }
@ -677,23 +670,19 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
return return
} else { } else {
if (left is IdentifierReference) { if (left is IdentifierReference) {
val name = asmgen.asmVariableName(left) asmgen.assignExpressionToRegister(left, RegisterOrPair.A)
if(rightConstVal.number.toInt()!=0) return if(rightConstVal.number.toInt()!=0)
asmgen.out(""" asmgen.out("""
lda $name
cmp #${rightConstVal.number} cmp #${rightConstVal.number}
beq + beq +
bcs $jumpIfFalseLabel bcs $jumpIfFalseLabel
+""") +""")
else else
asmgen.out(""" asmgen.out(" bne $jumpIfFalseLabel")
lda $name
bne $jumpIfFalseLabel""")
return
} }
else if (left is DirectMemoryRead) { else if (left is DirectMemoryRead) {
translateDirectMemReadExpression(left, false) translateDirectMemReadExpression(left, false)
if(rightConstVal.number.toInt()!=0) return if(rightConstVal.number.toInt()!=0)
asmgen.out(""" asmgen.out("""
cmp #${rightConstVal.number} cmp #${rightConstVal.number}
beq + beq +
@ -701,7 +690,6 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
+""") +""")
else else
asmgen.out(" bne $jumpIfFalseLabel") asmgen.out(" bne $jumpIfFalseLabel")
return
} }
} }
} }
@ -835,18 +823,17 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
return return
} else { } else {
if (left is IdentifierReference) { if (left is IdentifierReference) {
val name = asmgen.asmVariableName(left) if(rightConstVal.number.toInt()!=0) {
if(rightConstVal.number.toInt()!=0) asmgen.assignExpressionToRegister(left, RegisterOrPair.A)
asmgen.out(""" asmgen.out(" cmp #${rightConstVal.number} | bcc $jumpIfFalseLabel")
lda $name }
cmp #${rightConstVal.number}
bcc $jumpIfFalseLabel""")
return return
} }
else if (left is DirectMemoryRead) { else if (left is DirectMemoryRead) {
translateDirectMemReadExpression(left, false) if(rightConstVal.number.toInt()!=0) {
if(rightConstVal.number.toInt()!=0) translateDirectMemReadExpression(left, false)
asmgen.out(" cmp #${rightConstVal.number} | bcc $jumpIfFalseLabel") asmgen.out(" cmp #${rightConstVal.number} | bcc $jumpIfFalseLabel")
}
return return
} }
} }
@ -976,7 +963,7 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
else else
asmgen.out(" bne $jumpIfFalseLabel") asmgen.out(" bne $jumpIfFalseLabel")
} }
if (left is DirectMemoryRead) { else if (left is DirectMemoryRead) {
translateDirectMemReadExpression(left, false) translateDirectMemReadExpression(left, false)
return if(rightConstVal.number.toInt()!=0) return if(rightConstVal.number.toInt()!=0)
code("#${rightConstVal.number}") code("#${rightConstVal.number}")
@ -1013,7 +1000,7 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
else else
asmgen.out(" beq $jumpIfFalseLabel") asmgen.out(" beq $jumpIfFalseLabel")
} }
if (left is DirectMemoryRead) { else if (left is DirectMemoryRead) {
translateDirectMemReadExpression(left, false) translateDirectMemReadExpression(left, false)
return if(rightConstVal.number.toInt()!=0) return if(rightConstVal.number.toInt()!=0)
code("#${rightConstVal.number}") code("#${rightConstVal.number}")