From f4ad0fab803cda686a1582923a29acfcc6348765 Mon Sep 17 00:00:00 2001 From: Stephen Heumann Date: Sun, 18 Dec 2016 22:52:53 -0600 Subject: [PATCH] Fix bug in unsigned 32-bit division and remainder routines, which could cause mis-evaluation of constant expressions. The following example shows cases that were mis-evaluated: /* Should print "3 10000" */ #include int main(void) { printf("%lu %lu\n", 100000ul / 30000ul, 100000ul % 30000ul); } --- Expression.asm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Expression.asm b/Expression.asm index a8500aa..a79d1f3 100644 --- a/Expression.asm +++ b/Expression.asm @@ -90,7 +90,7 @@ dv3 asl ans roll up the next number rol ans+6 sec subtract for this digit lda ans+4 - sbc num1 + sbc num2 tax lda ans+6 sbc num2+2 @@ -267,7 +267,7 @@ dv3 asl ans roll up the next number rol ans+6 sec subtract for this digit lda ans+4 - sbc num1 + sbc num2 tax lda ans+6 sbc num2+2