mirror of
https://github.com/irmen/prog8.git
synced 2024-11-29 01:49:22 +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) {
|
private fun translateUwordLessOrEqualJump(left: Expression, right: Expression, leftConstVal: NumericLiteralValue?, rightConstVal: NumericLiteralValue?, jumpIfFalseLabel: String) {
|
||||||
|
|
||||||
// TODO fix this uword <=
|
|
||||||
|
|
||||||
fun code(msbCpyOperand: String, lsbCmpOperand: String) {
|
fun code(msbCpyOperand: String, lsbCmpOperand: String) {
|
||||||
asmgen.out("""
|
asmgen.out("""
|
||||||
cpy $msbCpyOperand
|
cpy $msbCpyOperand
|
||||||
beq +
|
beq +
|
||||||
|
bcc ++
|
||||||
bcs $jumpIfFalseLabel
|
bcs $jumpIfFalseLabel
|
||||||
+ cmp $lsbCmpOperand
|
+ cmp $lsbCmpOperand
|
||||||
bcs $jumpIfFalseLabel
|
bcc +
|
||||||
bne $jumpIfFalseLabel""")
|
beq +
|
||||||
|
bne $jumpIfFalseLabel
|
||||||
|
+""")
|
||||||
}
|
}
|
||||||
|
|
||||||
if(rightConstVal!=null) {
|
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) {
|
private fun translateUwordGreaterOrEqualJump(left: Expression, right: Expression, leftConstVal: NumericLiteralValue?, rightConstVal: NumericLiteralValue?, jumpIfFalseLabel: String) {
|
||||||
|
|
||||||
// TODO fix this uword >=
|
|
||||||
|
|
||||||
fun code(msbCpyOperand: String, lsbCmpOperand: String) {
|
fun code(msbCpyOperand: String, lsbCmpOperand: String) {
|
||||||
asmgen.out("""
|
asmgen.out("""
|
||||||
cpy $msbCpyOperand
|
cpy $msbCpyOperand
|
||||||
beq +
|
|
||||||
bcc $jumpIfFalseLabel
|
bcc $jumpIfFalseLabel
|
||||||
+ cmp $lsbCmpOperand
|
bne +
|
||||||
|
cmp $lsbCmpOperand
|
||||||
bcc $jumpIfFalseLabel
|
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