Wiele metod, dokładna analiza, może ktoś skorzysta:

https://github.com/TobyLobster/multiply_test

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

2

Wow. Aż miło poczytać taką analizę. Dobra rzecz!

3

no ja nadal nie mogę się zdecydować którą wybrać ;)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

4 Ostatnio edytowany przez Fox (2024-02-18 20:12:11)

Oczywiście z Syzygy 6. Bez znaku to samo co mult14, ze znakiem tutaj są wolniejsze.

https://www.youtube.com/watch?v=jofNR_WkoCE

5 Ostatnio edytowany przez Fox (2024-02-19 08:02:48)

Wrzuciłem jako smult10.

Edit: @Laoo: możeby tak wzmianka o akceleracji na Lynxie?

https://www.youtube.com/watch?v=jofNR_WkoCE

6

Hm... chyba to nie jest w zakresie tego artykułu. Na Lynksie po prostu wpisuje się wartości do rejestrów w odpowiedniej kolejności i po zapisaniu ostatniej + kilka cykli można z innych rejestrów przeczytać wynik. To nie ma związku z 6502 nawet do tego stopnia, że arytmometr mieści się w drugim czipie, w Suzy, czyli tym, który robi za blitter.

No i gratuluję najszybszego algorytmu 8x8!

7

https://github.com/TobyLobster/multiply … re-support

https://www.youtube.com/watch?v=jofNR_WkoCE

8

Aaa... tego punktu nie doczytałem. No to faktycznie. Można tam dodać.

9

Bardzo fajny artykuł. Chciałbym, żeby mądre głowy napisały podobny o dzieleniu i innych operacjach.

What can be asserted without proof can be dismissed without proof.

10

Ale Panowie. Tak trochę na marginesie.

Szanujmy się.

To jest "Porównanie różnych algorytmów mnożenia na 6502"!!!

Jak widzę ten obecny tytuł wątku to oczy krwawią!

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

11

A mnie się taki tytuł podoba i  związku z tym czekam na adekwatny o dzieleniu: "Porównanie różnych metod dywagacji na 6502" innych działaniach: addycji i subSRAcji. ;-)

Zawsze mam rację, tylko nikt mnie nie słucha.

12

dzielenie? to inna bajka, nie spotkałem się z podobnymi do mnożenia metodami przyspieszającymi dzielenie, rozpętlenie pętli co najwyżej

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

13

@Tebe Przecież dzielenie to mnożenie przez odwrotność. W arytmetyce modularnej to nawet działa. Nawet sam dawałeś przykład kodu parę lat temu, a ja dopisałem do tego trochę teorii.

14

W silniku portalowym Numena projekcja perspektywiczna jest realizowana przez wyznaczenie 40/Z i potem mnożenie.

Mnie też kłuje ta "multiplikacja", ale popieram "metody", bo są tam różne implementacje tego samego algorytmu.

https://www.youtube.com/watch?v=jofNR_WkoCE

15 Ostatnio edytowany przez tebe (2024-02-23 13:05:34)

xp := cx - newX div newZ;

https://codebase64.org/doku.php?id=base … it_product

wymaga poprawek, bo wynik dzielenia nie jest dokładny


https://www.bbcelite.com/6502sp/main/su … /ll28.html

https://gmplib.org/~tege/divcnst-pldi94.pdf

Post's attachments

fdivu_8d8.asm 1.86 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

Oficjalnie posypuję głowę popiołem i przepraszam wszystkich urażonych ;) Ten anglicyzm wkradł się pewnie dlatego że wątek założyłem od razu po przeczytaniu artykułu.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

17

Moje smult10 zostało zoptymalizowane o dwa cykle przy pomocy 256-bajtowej tablicy. Widzę też możliwość optymalizacji:

 txa
 eor #$80
 tax

przy pomocy nielegala:

 txa
 sbx #$80
https://www.youtube.com/watch?v=jofNR_WkoCE