From 6dff9ccd51bf7d55f13daf0599cd9bb4bfe23eb0 Mon Sep 17 00:00:00 2001 From: spth Date: Fri, 22 Feb 2008 14:46:58 +0000 Subject: [PATCH] Faster 8-bit multiplication: #1896290 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5040 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 5 +++++ device/lib/z80/mul.s | 40 ++++++++++++++++++++++------------------ 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1a673ab0..506b5b01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-02-22 Philipp Klaus Krause + + * device/lib/z80/mul.s: Rewrote __muluchar_rrx_s, to improve 8-bit mult., + implements #1896290. + 2008-02-22 Maarten Brock * src/SDCCast.c (createIvalStruct): fixed bug 1466761 diff --git a/device/lib/z80/mul.s b/device/lib/z80/mul.s index 00e6ce9e..a638e068 100644 --- a/device/lib/z80/mul.s +++ b/device/lib/z80/mul.s @@ -1,6 +1,26 @@ - ;; Originally from GBDK by Pascal Felber. + .area _CODE - .area _CODE +; This multiplication routine is similar to the one +; from Rodnay Zaks, "Programming the Z80". + +__muluchar_rrx_s:: + ld hl, #2 + add hl, sp + ld e, (hl) + inc hl + ld h, (hl) + ld l, #0 + ld d, l + ld b, #8 +muluchar_rrx_s_loop: + add hl, hl + jr nc, muluchar_rrx_s_noadd + add hl, de +muluchar_rrx_s_noadd: + djnz muluchar_rrx_s_loop + ret + +;; Originally from GBDK by Pascal Felber. __mulschar_rrx_s:: ld hl,#2 @@ -27,22 +47,6 @@ __mulschar_rrx_hds:: jp .mul16 -__muluchar_rrx_s:: - ld hl,#2 - add hl,sp - - ld e,(hl) - - inc hl - ld c,(hl) - - ;; Clear the top - xor a - ld d,a - ld b,a - - jp .mul16 - __mulint_rrx_s:: ld hl,#2 add hl,sp -- 2.30.2