base:8bit_multiplication_16bit_product_fast_no_tables
This is an old revision of the document!
; mul 8×8 16 bit result for when you can't afford big tables ; by djmips ; ; inputs are mul1 and mul2 and A should be zero ; output is 16 bit in A : mul1 ; ; total cycles worst case = 113 ; total cycles best case = 97 ; avg = 105 ; inner loop credits supercat
MUL:
dec mul2 ;5 ; decrement mul2 because we will be adding with carry set for speed (an extra one) ror mul1 ;5 \ bcc b1 ;2/3 \ Best case 8 Worst case 10 adc mul2 ;3 /
b1: ror ;2 \
ror mul1 ;5 \ bcc b2 ;2/3 / Best case 10 Worst case 12 adc mul2 ;3 /
b2: ror
ror mul1 bcc b3 adc mul2 ; 10 or 12
b3: ror
ror mul1 bcc b4 adc mul2 ; 10 or 12
b4: ror
ror mul1 bcc b5 adc mul2 ; 10 or 12
b5: ror
ror mul1 bcc b6 adc mul2 ; 10 or 12
b6: ror
ror mul1 bcc b7 adc mul2 ; 10 or 12
b7: ror
ror mul1 bcc b8 adc mul2 ; 10 or 12
b8: ror ; 2
ror mul1 ; 5 inc mul2 ; 5 rts
base/8bit_multiplication_16bit_product_fast_no_tables.1580677177.txt.gz · Last modified: 2020-02-02 21:59 by djmips