mirror of
https://github.com/irmen/prog8.git
synced 2024-11-25 19:31:36 +00:00
fix bugs in uword <= and >= comparisons
This commit is contained in:
parent
330e691b78
commit
1dbc902513
@ -790,16 +790,17 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
|
||||
|
||||
private fun translateUwordLessOrEqualJump(left: Expression, right: Expression, leftConstVal: NumericLiteralValue?, rightConstVal: NumericLiteralValue?, jumpIfFalseLabel: String) {
|
||||
|
||||
// TODO fix this uword <=
|
||||
|
||||
fun code(msbCpyOperand: String, lsbCmpOperand: String) {
|
||||
asmgen.out("""
|
||||
cpy $msbCpyOperand
|
||||
beq +
|
||||
bcc ++
|
||||
bcs $jumpIfFalseLabel
|
||||
+ cmp $lsbCmpOperand
|
||||
bcs $jumpIfFalseLabel
|
||||
bne $jumpIfFalseLabel""")
|
||||
bcc +
|
||||
beq +
|
||||
bne $jumpIfFalseLabel
|
||||
+""")
|
||||
}
|
||||
|
||||
if(rightConstVal!=null) {
|
||||
@ -959,14 +960,12 @@ internal class ExpressionsAsmGen(private val program: Program, private val asmge
|
||||
|
||||
private fun translateUwordGreaterOrEqualJump(left: Expression, right: Expression, leftConstVal: NumericLiteralValue?, rightConstVal: NumericLiteralValue?, jumpIfFalseLabel: String) {
|
||||
|
||||
// TODO fix this uword >=
|
||||
|
||||
fun code(msbCpyOperand: String, lsbCmpOperand: String) {
|
||||
asmgen.out("""
|
||||
cpy $msbCpyOperand
|
||||
beq +
|
||||
bcc $jumpIfFalseLabel
|
||||
+ cmp $lsbCmpOperand
|
||||
bne +
|
||||
cmp $lsbCmpOperand
|
||||
bcc $jumpIfFalseLabel
|
||||
+""")
|
||||
}
|
||||
|
@ -1,110 +0,0 @@
|
||||
%import textio
|
||||
%zeropage basicsafe
|
||||
|
||||
; Note: this program is compatible with C64 and CX16.
|
||||
|
||||
main {
|
||||
|
||||
sub start() {
|
||||
|
||||
uword v1
|
||||
uword v2
|
||||
|
||||
v1 = 100
|
||||
v2 = 64444
|
||||
if v1==v2
|
||||
txt.print("error in 100==64444!\n")
|
||||
else
|
||||
txt.print("ok: 100 not == 64444\n")
|
||||
|
||||
if v1!=v2
|
||||
txt.print("ok: 100 != 64444\n")
|
||||
else
|
||||
txt.print("error in 100!=64444!\n")
|
||||
|
||||
if v1<v2
|
||||
txt.print("ok: 100 < 64444\n")
|
||||
else
|
||||
txt.print("error in 100<64444!\n")
|
||||
|
||||
if v1<=v2
|
||||
txt.print("ok: 100 <= 64444\n")
|
||||
else
|
||||
txt.print("error in 100<=64444!\n")
|
||||
|
||||
if v1>v2
|
||||
txt.print("error in 100>64444!\n")
|
||||
else
|
||||
txt.print("ok: 100 is not >64444\n")
|
||||
|
||||
if v1>=v2
|
||||
txt.print("error in 100>=64444!\n")
|
||||
else
|
||||
txt.print("ok: 100 is not >=64444\n")
|
||||
|
||||
|
||||
v1 = 5555
|
||||
v2 = 322
|
||||
if v1==v2
|
||||
txt.print("error in 5555==322!\n")
|
||||
else
|
||||
txt.print("ok: 5555 not == 322\n")
|
||||
|
||||
if v1!=v2
|
||||
txt.print("ok: 5555 != 322\n")
|
||||
else
|
||||
txt.print("error in 5555!=322!\n")
|
||||
|
||||
if v1<v2
|
||||
txt.print("error in 5555<322!\n")
|
||||
else
|
||||
txt.print("ok: 5555 is not < 322\n")
|
||||
|
||||
if v1<=v2
|
||||
txt.print("error in 5555<=322!\n")
|
||||
else
|
||||
txt.print("ok: 5555 is not <= 322\n")
|
||||
|
||||
if v1>v2
|
||||
txt.print("ok: 5555 > 322\n")
|
||||
else
|
||||
txt.print("error in 5555>322!\n")
|
||||
|
||||
if v1>=v2
|
||||
txt.print("ok: 5555 >= 322\n")
|
||||
else
|
||||
txt.print("error in 5555>=322!\n")
|
||||
|
||||
v1 = 322
|
||||
v2 = 322
|
||||
if v1==v2
|
||||
txt.print("ok: 322 == 322\n")
|
||||
else
|
||||
txt.print("error in 322==322!\n")
|
||||
|
||||
if v1!=v2
|
||||
txt.print("error in 322!=322!\n")
|
||||
else
|
||||
txt.print("ok: 322 is not != 322\n")
|
||||
|
||||
if v1<v2
|
||||
txt.print("error in 322<322!\n")
|
||||
else
|
||||
txt.print("ok: 322 is not < 322\n")
|
||||
|
||||
if v1<=v2
|
||||
txt.print("ok: 322 <= 322\n")
|
||||
else
|
||||
txt.print("error in 322<=322!\n")
|
||||
|
||||
if v1>v2
|
||||
txt.print("error in 322>322!\n")
|
||||
else
|
||||
txt.print("ok: 322 is not > 322\n")
|
||||
|
||||
if v1>=v2
|
||||
txt.print("ok: 322 >= 322\n")
|
||||
else
|
||||
txt.print("error in 322>=322!\n")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user