mirror of
https://github.com/irmen/prog8.git
synced 2025-02-18 05:30:34 +00:00
refactor byte '==', '!=', '<' and '>' codegen 2
This commit is contained in:
parent
38e40084f1
commit
b630fae580
@ -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}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user