@AmmigaCDTV, post #260
A co do kosztów produkowania układów itp. itd. to mi chodziło o inwestora, który ma te 200-300mln$ a nie 200 czy 300 tysięcy złotych.
@KM, post #264
Zamiast MMX trzeba było wrzuciś DSP Motoroli, który był na kartach dźwiękowych i popędzić go ile się da.To jest znacznie mniej wydajne i bardziej skomplikowane rozwiązanie. Zauważ, że nie zrobiła tego ani Freescale z architekturą PowerPC (a mieli swoje DSP), ani Intel z architekturą x86 oraz x86_64 (a mieli swoje DSP), ani ARM. We wszystkich najpopularniejszych platformach CPU dodano instrukcje SIMD (AltiVec, MMX, SSE, Neon), zamiast integrować jakieś procesory DSP.
czyli sama AGA plus coś do akceleracji 3DTa jasne. Niech jednostka 3D rysuje to samo na kilku bitplanach i jeszcze może niech paletę do cieniowania dobiera... Moim zdaniem dodawanie jednostki 3D do wiernej implementacji AGA (bez trybu przynajmniej HighColor czyli 16 bitów na piksel i chunky oczywiście) mija się z celem. Zdecydowanie bardziej z sensem byłaby prosta karta graficzna np. tylko z trybem 24-bit RGB, ale na tyle prosta, żeby ewentualni koderzy mogli ją też programować na poziomie rejestrów, a nie tylko poprzez system RTG i wtedy do niej można dodać prostą jednostkę 3D (którą później można rozbudowywać).
A teraz walcie rybą.Mi się nie chce, aczkolwiek jesteś wzorcowym przykładem powiedzonka „nie znam się, więc się wypowiem”. W dodatku od lat i nic się nie poprawiasz...
@Krashan, post #272
@UJP, post #271
@KM, post #273
@UJP, post #275
@UJP, post #275
Uboga lista rozkazów, wielość rejestrów i w końcu wieloprocesorowość bardzo utrudniły programowanie na niskim poziomie, na RISC nie jest praktycznie możliwe napisanie większego programu w asemblerze,
nikt zdrowy na umyśle tego nie ogarnie, ale to nie problem, bo programuje się w językach wysokiego poziomu a kompilatory lepiej lub gorzej wszytko ogarną.
Myślę że programistów może ciągnąć do MC68k bo ten CPU to jeden z ostatnich "pełnokrwistych" CISC, pozwala stosunkowo łatwo programować w asemblerze,
a dobry programista może uzyskać dużo lepsze wyniki wydajności kodu po uwzględnieniu zegara taktowania niż w RISC jak PPC
no i " obcuje z żywym sprzętem" a nie na "xx warstwie abstrakcji" jak pod dzisiejszymi systemami.
Dzisiejsze procki CISC jak x86 to naprawdę RISC, a bardziej skomplikowane rozkazy wykonywane są w formie mikrokodu ( pewnie i 68080 tak jest zrobiony ), ale z poziomu programisty pozostają CISC
Jak za bardzo p.... to sorry, właśnie skończyłem 1L "wysoko oktanowego" płynu z kumplem i nie do końca mogę odpowiadać za swoje słowa
@Krashan, post #272
@mschulz, post #278
Napiszesz to samo w jezyku wyzszego poziomu, chocby i w C i zmienisz docelowy CPU za pomoca jednego parametru przy wywolywaniu kompilatora.
@Hexmage960, post #283
@Krashan, post #285
ULONG x; x = (x << 16) | (x >> 16);na
SWAP D0
ULONG x; x = (x << 4) | (x >> 28);na
ROL.L #4,D0
WORD x = 3; LONG y = 2000000 + x;
MOVE.W #3,D0 MOVE.L #2000000,D1 EXT.L D0 ADD.L D0,D1
OpenLibs: LEA (libdata,PC),A2 LEA (libbase,PC),A3 MOVEA.L (4).w,A6 MOVEQ #LIBS-1,D2 .Loop: MOVEQ #KICK,D0 MOVEA.L (A2)+,A1 JSR (_LVOOpenLibrary,A6) MOVE.L D0,(A3)+ DBEQ D2,.Loop BEQ.S .Error ; ... libdata: DC.L dosname, intname, gtname, gfxname libbase: DS.L LIBS dosname: DC.B 'dos.library',0 intname: DC.B 'intuition.library',0 gtname: DC.B 'gadtools.library',0 gfxname: DC.B 'graphics.library',0
@Hexmage960, post #286
@Hexmage960, post #283
Poza tym asm przydaje się w:
- kodzie przerwań,
- kodzie, który powinien być wykonywany jak najszybciej, np. kod startowy,
- kodzie, gdzie liczy się kolejność i położenie elementów (biblioteki współdzielone, device itp.).
moveq #-1, d0 rts
Asembler moim zdaniem powinien być używany przede wszystkim przez funkcje niskiego poziomu na Amidze.
@mschulz, post #288
Kod startowy nie musi byc wykonywany jak najszybciej, bo jest uruchamiany tylko jeden jedyny raz w momencie startu programu. Duzo wazniejsza jest optymalizacja tych fragmentow programu ktore sa wykonywane najczesciej
kolejnosc umieszczenia reszty kodu w bibliotece czy w device nie ma najmniejszego znaczenia. To struktura Resident jest punktem zaczepienia i to ona (plus np. tablica wektorow) mowi systemowi co gdzie jest umieszczone. A te smetne 6 bajtow kodu startowego da sie zalatwic prostym skryptem dla programu konsolidujacego. I juz masz gotowa biblioteke napisana w czystym C...
Jestem prawie że pewien że GCC domyśli się z tymi shiftami że ma zrobić EXTa.
Z rotacją problem jest szeroko opisany i jest też sprawdzona metoda na zapisanie takiej operacji żeby GCC się domyślił. Na Amidze jeszcze nie sprawdzałem bo rotacji nie potrzebowałem, ale stawiam w ciemno że zadziała.
Moją definicją postępu jest używanie nowych narzędzi do coraz lepszego rozwiązywania starych problemów. Jeśli nowe narzędzia na to nie pozwalają, to stoimy w miejscu. C/C++ są na tyle nisko, by potencjalnie móc przełożyć wszystkie intencje programisty na język asemblerowy - jeśli nie w standardzie to w oparciu o rozszerzenia specyficzne dla platformy. Są na tym świecie ludzie, którzy siedzą i rozwijają tego typu narzędzia i chwała im za to. Wolę jednak męczyć się z C i przykładać rękę do rozwoju wskazując narzędziotwórcom miejsca do poprawki, niż męczyć się z asemblerem tylko dla danej platformy. Ktoś mi może zarzucić że to mało amigowe podejście ale widać różnych rzeczy różni ludzie szukają w tym hobby.
static inline uint32_t rotr32 (uint32_t n, unsigned int c) { const unsigned int mask = (CHAR_BIT*sizeof(n) - 1); // assert ( (c<=mask) &&"rotate by type width or more"); c &= mask; return (n>>c) | (n<<( (-c)&mask )); }
@Hexmage960, post #289
W C można rezerwować różne tablice w przestrzeni globalnej, ale standard tego języka nie daje gwarancji, że będą one obok siebie.
Struktura ROMTag musi zaczynać się od "magicznej liczby", która jest wyszukiwana w kodzie biblioteki. Reszta rzeczy jest z nią połączona.
@Hexmage960, post #289
@Hexmage960, post #292
Tak, asembler wygeneruje tę liczbę (oraz wszystko pozostałe) w dowolnie wybranym miejscu kodu.
@teh_KaiN, post #291
@AmmigaCDTV, post #295
Kurka wodna, ale wy macie wiedzę. Nie chcecie jej spożytkować na dorobienie obsługi Akiko dla innych gier 3D, które normalnie jej nie wykorzystują? Nie wiem, Alien Breed 3D i jeszcze jakieś inne.
@polutuje, post #298