From 0cf948e3bd31cd82741132007b6f4d222f582623 Mon Sep 17 00:00:00 2001 From: Stephen Heumann Date: Mon, 19 Dec 2016 14:02:26 -0600 Subject: [PATCH] Fix to make statically-evaluated unsigned comparisons evaluate to 1 if true. Previously, they evaluated to -1. The following example shows the problem: #include int main(void) { printf("%i\n", 0U <= 5U); } --- Expression.asm | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Expression.asm b/Expression.asm index a79d1f3..bf16db3 100644 --- a/Expression.asm +++ b/Expression.asm @@ -145,8 +145,7 @@ result equ 0 lda x cmp y lb1 blt lb2 - dec result - dec result+2 + inc result lb2 return 2:result end @@ -170,8 +169,7 @@ result equ 0 lda x cmp y lb1 ble lb2 - dec result - dec result+2 + inc result lb2 return 2:result end @@ -195,8 +193,7 @@ result equ 0 lda x cmp y lb1 bgt lb2 - dec result - dec result+2 + inc result lb2 return 2:result end @@ -220,8 +217,7 @@ result equ 0 lda x cmp y lb1 bge lb2 - dec result - dec result+2 + inc result lb2 return 2:result end