implement long comparisons > and <=

This commit is contained in:
Irmen de Jong
2025-10-06 23:42:40 +02:00
parent f5f5aef722
commit f7639cb78f
3 changed files with 10 additions and 19 deletions

View File

@@ -1474,8 +1474,14 @@ _jump jmp (${target.asmLabel})
jump: PtJump?, jump: PtJump?,
stmt: PtIfElse stmt: PtIfElse
) { ) {
assignmentAsmGen.assignExpressionToRegister(right, RegisterOrPair.R2R3_32, left.type.isSigned) if(operator=="<" || operator ==">=") {
assignmentAsmGen.assignExpressionToRegister(left, RegisterOrPair.R0R1_32, left.type.isSigned) assignmentAsmGen.assignExpressionToRegister(right, RegisterOrPair.R2R3_32, left.type.isSigned)
assignmentAsmGen.assignExpressionToRegister(left, RegisterOrPair.R0R1_32, left.type.isSigned)
} else {
// flip operands
assignmentAsmGen.assignExpressionToRegister(left, RegisterOrPair.R2R3_32, left.type.isSigned)
assignmentAsmGen.assignExpressionToRegister(right, RegisterOrPair.R0R1_32, left.type.isSigned)
}
asmgen.out(""" asmgen.out("""
sec sec
lda cx16.r0 lda cx16.r0
@@ -1487,19 +1493,13 @@ _jump jmp (${target.asmLabel})
lda cx16.r0+3 lda cx16.r0+3
sbc cx16.r2+3""") sbc cx16.r2+3""")
when(operator) { when(operator) {
"<" -> { "<", ">" -> {
if (jump != null) if (jump != null)
translateJumpElseBodies("bmi", "bpl", jump, stmt.elseScope) translateJumpElseBodies("bmi", "bpl", jump, stmt.elseScope)
else else
translateIfElseBodies("bpl", stmt) translateIfElseBodies("bpl", stmt)
} }
">" -> { ">=", "<=" -> {
TODO("long > value ${left.position}")
}
"<=" -> {
TODO("long <= value ${left.position}")
}
">=" -> {
if (jump != null) if (jump != null)
translateJumpElseBodies("bpl", "bmi", jump, stmt.elseScope) translateJumpElseBodies("bpl", "bmi", jump, stmt.elseScope)
else else

View File

@@ -1,11 +1,6 @@
TODO TODO
==== ====
LONG TYPE
---------
- implement long > and <= in compareLongValues()
STRUCTS and TYPED POINTERS STRUCTS and TYPED POINTERS
-------------------------- --------------------------

View File

@@ -40,7 +40,6 @@ main {
/*
txt.print("<=\n") txt.print("<=\n")
lv1 = $77777777 lv1 = $77777777
lv2 = $55555555 lv2 = $55555555
@@ -71,10 +70,8 @@ main {
else else
txt.print("error3 ") txt.print("error3 ")
txt.nl() txt.nl()
*/
/*
txt.print(">\n") txt.print(">\n")
lv1 = $77777777 lv1 = $77777777
lv2 = $55555555 lv2 = $55555555
@@ -105,7 +102,6 @@ main {
else else
txt.print("ok3 ") txt.print("ok3 ")
txt.nl() txt.nl()
*/
txt.print(">=\n") txt.print(">=\n")