CC65 crosscompiler v2.8.0

http://www.cc65.org

V polovině dubna 2002 jsem se dozvěděl o existenci nové verze křížového kompilátoru CC65 pro systémy s procesorem 6502. Ano, je to další verze toho stejného crosscompileru jazyka C, o kterém psal v minulém Flopu Jirka Svoboda. Protože jsem však Jirku zaúkoloval jiným článkem a do termínu vydání Flopu zbývá zhruba týden, zmíním se pouze v krátkosti o některých hlavních oznámených vylepšeních oproti předchozí verzi, která se týkají přímo Atárka, a pak vás seznámím s výsledky mého vlastního testování CC65.

Novinky CC65 v2.8.0

RS232 podpora pro Atari platformu:

Několik změn týkajících se generování kódu a optimalizací:

Testování

Neodolal jsem a narychlo provedl pár jednoduchých testů kompilace dvou ukázkových příkladů, které se nacházejí v balíku crosscompileru. Zajímala mě hlavně možnost kompilace s optimalizací na velikost. Zde jsou výsledky:

Normálně:
hello.c => hello.com (3087 bytes)
S optimalizací:
hello.c => hello.com (3066 bytes)

Tím jsem si ověřil, že optimalizace skutečně funguje. K výsledné velikosti ještě podotknu, že tento příklad "Hello world!" rozhodně není ona klasická varianta s jedním řádkem tisku, ale obsahuje mazání obrazovky, malé parádičky se systémovým přebráním rozměrů obrazovky, kreslením ohraničujícího obdélníku, vlastní tisk textu a čekání na stisk klávesy. Zkoušel jsem ze zvědavosti tento příklad osekat a nechat jen minimum - výsledek pouze s tiskem měl při zapnuté optimalizaci pouhých 2625 bytes.

Druhý příklad je zajímavější. Program "Sieve" provádí vyhledání prvočísel v intervalu 2 až 8192 metodou Eratosthenova síta. Po dokončení výpočtu zobrazí výsledný čas a nabídne výpis.

Normálně:
sieve.c => sieve.com (4023 bytes)
S optimalizací:
sieve.c => sieve.com (3844 bytes)

Kromě úspory 179 bytes je však daleko skvělejším zjištěním vliv zapnuté optimalizace na rychlost. Bez optimalizace trval výpočet 146 ticks (padesátin sekundy), s optimalizací pouhých 57 ticks. Zrychlení je tedy v tomto případě více než 2.5 násobné!

Protože CC65 je crosscompiler pro různé systémy s procesorem 6502, zkusil jsem zkompilovat a spustit oba dva příklady i pro Commodore C64. Výsledky:

Normálně:
hello.c => hello.prg (2665 bytes)
S optimalizací:
hello.c => hello.prg (2644 bytes)

Normálně:
sieve.c => sieve.prg (3142 bytes)
S optimalizací:
sieve.c => sieve.prg (2963 bytes)

Úspora se zapnutou optimalizací je i na C64, zcela logicky, v obou případech naprosto stejná jako úspora na Atárku a má samozřejmě také vliv na rychlost. Bez optimalizace trvá výpočet na C64ce 225 ticks, se zapnutou 87 ticks, což představuje též (překvapivě ;-)) více než 2.5 násobné zrychlení.

-RASTER-