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.

2

A jaka dziedzina i przeciwdziedzina?
Po ludzku: jaki zakres argumentów i jaki spodziewany zakres wartości?

Aby odpackować teksty trzeba najpierw odpackować  program do ich odpackowywania - Energy #1

3

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.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

4

wyczuwam w tym jakis zakładzik ...

Im dłużej czekamy, tym wzorek jest większy" (c) by Sikor

5

heh... duzo... tak tez myslalem... chociaz moze daloby sie skrocic bo argument I 4-bitowy a drugi juz 8...

6

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.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

7

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.

8

bardzo szybkie mnozenie znajdziecie tu

http://www.ffd2.com/fridge/math/fastmult

pozatym powinniscie znac

http://www.ffd2.com/fridge/

a najlepiej

http://www.6502.org/

zreszta od czego jest Google :)

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

9

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:

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

10

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.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

11

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:

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

12

ale sie beznadziejna gadanina robi z tego mądrego tematu...

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.