PDA

Просмотр полной версии : Fast 48x48 MUL | DIV



Sinus
01.07.2005, 02:12
Yo yo yo!

Никто не занимался такой фигнёй?
Я написал, но как-то выглядит неоптимально ^_^

Если кто-нибудь спец в умножениях и делениях, то киньте в меня куском кода плиз. (на добрый толк надо 64x64, но тогда в регистры сразу два числа фиг запихнёшь ^_^ но если для вас это не проблема, то можно и 64x64 ^_^)

Dr.Lion/RSM
02.07.2005, 03:45
Я написал, но как-то выглядит неоптимально ^_^
Может покажешь свой код и немножко опишешь, как он работает? А то мне остро нужны быстрые процедуры умножения/деления правда 32х32!

Sinus
02.07.2005, 23:01
Чуток позже закину, ибо пишу на кае, а инет естессно на пэцэ ;)
На самом деле всё точно так же как и в умножении | делении 8x8, только почему то мне кажется что существуют более оптимальные методы.

Shiru
03.07.2005, 01:38
Обычное побитовое умножение-деление?

Vitamin
03.07.2005, 12:10
поковырялся в своих исходах арифметического сжатия. вытащил вот что



BIGMULT ;DEHL=DE*BC
LD HL,0
DUP 16
ADD HL,HL
RL E
RL D
JR NC,$+6
ADD HL,BC
JR NC,$+3
INC DE
EDUP
RET

BIGDIV
LD HL,0 ;BC'BC=BC'BC/DE
SLA C
RL B
EXX
LD HL,0
RL C
RL B
EXX

DUP 32
ADC HL,HL
EXX
ADC HL,HL
EXX
SBC HL,DE
JR NC,$+14 ;ZZ
EXX
LD A,H
OR L
EXX
JR Z,$+7 ;ZZ1
EXX
DEC HL
EXX
JR $+3 ;ZZ
ADD HL,DE ;ZZ1
RL C ;ZZ
RL B
EXX
RL C
RL B
EXX
EDUP

LD A,C
CPL
LD C,A
LD A,B
CPL
LD B,A
RET


мож кому пригодится

Sinus
03.07.2005, 12:34
Обычное побитовое умножение-деление?
Ага.

fk0
05.07.2005, 17:00
Может покажешь свой код и немножко опишешь, как он работает? А то мне остро нужны быстрые процедуры умножения/деления правда 32х32!
http://groups-beta.google.com/group/fido7.zx.spectrum/msg/4e99e4d753b31c1d?dmode=source&hl=en