]> git.sur5r.net Git - cc65/commitdiff
Minor math optimizations
authorIrgendwerA8 <c.krueger.b@web.de>
Thu, 28 Feb 2019 16:30:34 +0000 (17:30 +0100)
committerOliver Schmidt <ol.sc@web.de>
Thu, 28 Feb 2019 18:48:29 +0000 (19:48 +0100)
libsrc/runtime/ludiv.s
libsrc/runtime/udiv32by16r16.s
libsrc/runtime/umul16x16r32.s
libsrc/runtime/umul8x16r24.s

index 54af4780e4407b74bf0e464fe366dfc1e1a4e06c..8a3126d720f3828e2353b6ad2a2e42b0b5829f37 100644 (file)
@@ -78,7 +78,7 @@ L0:     asl     ptr1
 ; Do a subtraction. we do not have enough space to store the intermediate
 ; result, so we may have to do the subtraction twice.
 
-        pha
+        tax
         cmp     ptr3
         lda     ptr2+1
         sbc     ptr3+1
@@ -91,9 +91,9 @@ L0:     asl     ptr1
 ; Overflow, do the subtraction again, this time store the result
 
         sta     tmp4            ; We have the high byte already
-        pla
+        txa
         sbc     ptr3            ; byte 0
-        pha
+        tax
         lda     ptr2+1
         sbc     ptr3+1
         sta     ptr2+1          ; byte 1
@@ -102,7 +102,7 @@ L0:     asl     ptr1
         sta     tmp3            ; byte 2
         inc     ptr1            ; Set result bit
 
-L1:     pla
+L1:     txa
         dey
         bne     L0
         sta     ptr2
index 9897f9908250d3a96510063133bb817e49779c8e..27f1176dd4ed1f21c3b2be5d891be6d56ae48dd1 100644 (file)
@@ -34,19 +34,19 @@ L0:     asl     ptr1
         rol     a
         rol     sreg+1
 
-        pha
+        tax
         cmp     ptr3
         lda     sreg+1
         sbc     ptr3+1
         bcc     L1
 
         sta     sreg+1
-        pla
+        txa
         sbc     ptr3
-        pha
+        tax
         inc     ptr1
 
-L1:     pla
+L1:     txa
         dey
         bne     L0
         sta     sreg
index 9ecd1596ebb2f558e1f4d03a8120d44325c1e309..cd2dae351e73bd169d59f4b902594dea86bf57cb 100644 (file)
@@ -42,11 +42,11 @@ umul16x16r16m:
 
         clc
         adc     ptr3
-        pha
+        tax
         lda     ptr3+1
         adc     sreg+1
         sta     sreg+1
-        pla
+        txa
 
 @L1:    ror     sreg+1
         ror     a
index ff7d0bae6f07ffdc27054676f2e405e0d9da1315..c006082a46a3ccb9209e36f45eaa86db02555a00 100644 (file)
@@ -9,6 +9,7 @@
 
         .include        "zeropage.inc"
 
+        .macpack        cpu
 
 ;---------------------------------------------------------------------------
 ; 8x16 => 24 unsigned multiplication routine. Because the overhead for a
@@ -30,9 +31,14 @@ umul8x16r16:
 
 umul8x16r24m:
 umul8x16r16m:
+.if (.cpu .bitand ::CPU_ISET_65SC02)
+        stz     ptr1+1
+        stz     sreg
+.else
         ldx     #0
         stx     ptr1+1
         stx     sreg
+.endif
 
         ldy     #8              ; Number of bits
         ldx     ptr3            ; Get into register for speed