Temat: pytanie do programistow/koderow.
słuchajcie ile czasu może zająć wykonanie przeszło 32000 mnożeń z tym że połowa to mnożenia przez zero... tak intuicyjnie.... optymalna procedurka? w ile ramek? z góry dzięki.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
BigPEmu 1.12 Richard Whitehouse wydał BigPEmu 1.12
FujiNET firmware v1.3.0 Nowa wersja oprogramowania do interfejsu sieciowego FujiNET. Tym razem z obsługą TCP!
hatari 2.5.0 Od dwóch dni dostępna jest najnowsza (2.5.0) wersja Hatari.
Grawitacja 2024 Czas na kolejną edycję 8 bitowego GameJamu.
Tenebra na Atari ST/STE Wersja gry na duże atari.
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
słuchajcie ile czasu może zająć wykonanie przeszło 32000 mnożeń z tym że połowa to mnożenia przez zero... tak intuicyjnie.... optymalna procedurka? w ile ramek? z góry dzięki.
A jaka dziedzina i przeciwdziedzina?
Po ludzku: jaki zakres argumentów i jaki spodziewany zakres wartości?
na mnozenie przez zero wystarczy kilkanascie cyckow, na pelne 8bit*8bit gdzies w syzygy byla procka 0xFa o ile pamietam ok.60 cyc, to wychodzi trzydziesci kilka ramek, ale moglem sie pomylic bo to na szybkosci.
wyczuwam w tym jakis zakładzik ...
heh... duzo... tak tez myslalem... chociaz moze daloby sie skrocic bo argument I 4-bitowy a drugi juz 8...
no to mozesz zrobic dwa mnozenia naraz, jezeli upchasz dwa czterobitowe argumenty w jeden i odpowiednio dopasujesz tablice, ale nie daje gwarancji, ze to jest mozliwe, bo nie pamietam jak ta procka wygladala.
a była taka procedurka do mnozenia z pomoca wyrazenia:
x*y=((x+y)^2+(x-y)^2)/2
nie pamiętam ile to kosztowało cykli, ale chyba mało. trzeba tylko zrobić prekalkulowane tablice kwadratów.
bardzo szybkie mnozenie znajdziecie tu
http://www.ffd2.com/fridge/math/fastmult
pozatym powinniscie znac
a najlepiej
zreszta od czego jest Google :)
Jeśli możesz poświęcić 8kB, to zrób tablicę wszystkich możliwych wyników, a proca mnożenia wyglądać będzie tak (spisana z kartki, nie zoptymalizowana, nie wiem czy działa, ale chodzi o sama ideę :rolleyes: ):
mul48 lda m4
and m8
tax
beq ?x
clc
lda m4
adc #>tab.lo
sta t.lo+1
adc #$10
sta t.hi+1
ldy m8
lda (t.hi),y
tax
lda (t.lo),y
?x rts
Komórki na stronie 0 o adresach t.lo i t.hi zawierają młodsze bajty tablic wyników i nie powinny się zmieniać w czasie wykonywania programu.
Zrobienie samej tablicy nie stanowi problemu. :)
Epi: jak przewidzisz wartości czynników drugiego mnożenia i jaką masz gwarancję, że mnożenie to będzie przez tę samą liczbę 8-bitową?
A nawet jeśli, to jak potem rozdzielisz wartość 16-bitową na dwie 12-bitowe? Tylko tak szybciutko, bo 60 cykli, to nie wiele. :twisted:
Epi: jak przewidzisz wartości czynników drugiego mnożenia i jaką masz gwarancję, że mnożenie to będzie przez tę samą liczbę 8-bitową?
A nawet jeśli, to jak potem rozdzielisz wartość 16-bitową na dwie 12-bitowe? Tylko tak szybciutko, bo 60 cykli, to nie wiele. :twisted:
odpowiednio dopasujesz tablice, ale nie daje gwarancji, ze to jest mozliwe, bo nie pamietam jak ta procka wygladala.
Na tym dowcip polega. Nawet jak uda Ci się spreparować taką tablicę, w co wątpię, to zajmie ona tyle pamięci, że lepiej od razu porzucić ten temat.
A wątpię, bo do masz tylko 16 bitów, a dwa wyniki w/w mnożenia, to razem bitów 24. Jednym słowem miałbyś tablicę "sum kontrolnych". A te mają to do siebie, że dla różnych kombinacji na wejściu mogą dać jednakowe wyniki na wyjściu.
Poza tym, nadal nie wiesz co będziesz mnożył następnym razem. A jak wiesz, to po co mnożyć? Lepiej od razu zrobić tabelkę gotowych iloczynów. :lol:
ale sie beznadziejna gadanina robi z tego mądrego tematu...
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
[ Wygenerowano w 0.069 sekund, wykonano 9 zapytań ]