From 3812c5c854b49c37b6f957ace2fff5b0cc16c5d2 Mon Sep 17 00:00:00 2001 From: uz Date: Sun, 10 Jul 2011 14:50:18 +0000 Subject: [PATCH] Added labels for umul16x16r16 and umul16x16r16m. git-svn-id: svn://svn.cc65.org/cc65/trunk@5077 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/runtime/umul16x16r32.s | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/libsrc/runtime/umul16x16r32.s b/libsrc/runtime/umul16x16r32.s index 1f3efb65c..d481fd166 100644 --- a/libsrc/runtime/umul16x16r32.s +++ b/libsrc/runtime/umul16x16r32.s @@ -5,27 +5,34 @@ ; .export umul16x16r32, umul16x16r32m + .export umul16x16r16, umul16x16r16m .include "zeropage.inc" ;--------------------------------------------------------------------------- -; 16x16 => 32 unsigned multiplication routine. +; 16x16 => 32 unsigned multiplication routine. Because the overhead for a +; 16x16 => 16 unsigned multiplication routine is small, we will tag it with +; the matching labels as well. ; ; routine lhs rhs result result also in ; ----------------------------------------------------------------------- ; umul16x16r32 ptr1 ax ax:sreg ptr1:sreg ; umul16x16r32m ptr1 ptr3 ax:sreg ptr1:sreg +; umul16x16r16 ptr1 ax ax ptr1 +; umul16x16r16m ptr1 ptr3 ax ptr1 ; ; ptr3 is left intact by the routine. ; umul16x16r32: +umul16x16r16: sta ptr3 stx ptr3+1 umul16x16r32m: - lda #0 +umul16x16r16m: + lda #0 sta sreg+1 ldy #16 ; Number of bits @@ -34,22 +41,23 @@ umul16x16r32m: @L0: bcc @L1 clc - adc ptr3 + adc ptr3 pha lda ptr3+1 - adc sreg+1 - sta sreg+1 + adc sreg+1 + sta sreg+1 pla @L1: ror sreg+1 - ror a - ror ptr1+1 - ror ptr1 + ror a + ror ptr1+1 + ror ptr1 dey bne @L0 sta sreg ; Save byte 3 - lda ptr1 ; Load the result - ldx ptr1+1 - rts ; Done + lda ptr1 ; Load the result + ldx ptr1+1 + rts ; Done + -- 2.39.5