Witam. Przepraszam, ze tak pozno, ale nie mam jeszcze sieci w akademiku i rzadko zagladam na net
Na poczatek.
.. nie MAE. Mówił coś o jakimś krosie - wydaje mi się, że na grzybie - i to jest dla mnie dziwne ..
Ale dlaczego dziwne? Niektorzy ludzie nie maja twardych dyskow, a na dodatek APE dziala im tylko z podstawowa predkoscia. Czy dziwne jest to, ze nie marnuja masochostycznie czasu na te wszystkie pip-pip-pip przy kazdej asemblacji? Ja nie moge sobie na to pozwolic. Dodatkowo jestem na tyle szalony, ze szukam nowych rozwiazan przy pisaniu dem na atari i elastycznosci, ktora chce teraz osiagnac, nie mozna praktycznie uzyskac pracujac tylko przy atari.
Do napisania benchmarku uzylem asemblerka acme. Jesli kogos to zainteresuje, to moge podczepic gdzies zrodelka. Liste wielu crossasemblerow mozna znalec na 6502.org/crossdev/asm. Z tego co wiem, to niestety rzaden z nich nie supportuje atari i o automatycznym generowaniu naglowkow ff ff mozemy zapomniej (ew. mozna napisac sobie makra radzace sobie z tym problemem, tylko wydaje mi sie to troche kulawym rozwiazaniem). Przy pisaniu benchmarku z braku lepszego pomyslu kod 8-bitowy pisalem w miesmiertelnym x-asmie a fragment dla 16-bit incbinowalem w odpowiedni fragment. Teraz pracuje nad nowym demosystemem wykorzystujacym crossassembler ca65 z pakietu cc65 (a wlasciwie troche zmodyfikowana dla moich potrzeb wersje). Ogolnie uwazam, ze pisanie dla atari w ca65 wydaje mi sie nie najgorszym pomyslem, gdyz standardowy linker (jak wiemy uwzgledniajac doswiadczenia z pisania w C) potrafi wyprodukowac kod dla atari. Dodatkowo ca65 wydaje mi sie byc najsilniejszym crossem dla rodziny 65xxx z segmentami, relokowalnym kodem, silnymi makrami, wiec polecam.
Asembler, ktory za przyklad podal TeBe jest destynowany do generowania ROMow na konsole SNESa (prawdopodomnie stad ten 32-kilobajtowy plik wynikowy). Cale zamieszanie z dlugimi i krotkimi operandami jest niestety nie do unikniecie i uzycie tych samych kodow rozkazow dla dlugich i krotkich instrukcji jest wg mnie najslabsza strona 65c816. Koder i tak sam musi dbac o to czy dany rozkaz jest krotki czy dlugi i rozwiazanie przelaczania stanu asemblacji czy zaznaczania explicite dlugosci instrukcji jest wg mnie kwestia preferencji bo oba rozwiazania sa rownie zle :)
Dość kompetentne zrodlo informacji o 65c816 (i to o dziwo ostatnio modyfikowane w czerwcu 2004) mozemy znalezc TU. Jedyna uwaga, ze wciaz nie zostal poprawiony blad, ze adresy przerwan w trybie natywnym sa pod ffex a nie fffx.