Moja priča počinje 85-86 i zx spektruma, naravno u upotrebi je bio basic a asembler je bio samo za "izabrane". Prve programe sam pisao u bejziku ali ni blizu nisu bili brzi kao tamo neke "fabričke" igrice. U međuvremenu su neki časopisi počeli objavljivati listinge pisane u asm-u. Tada je na scenu stupio "Z80 tools" i moji prvi koraci u pisanju (prekucavanju) polu-razumljivog koda. Nije bilo interneta, pdf-a i raznih tutorijala. I taman kada sam počeo da kontam komande, pređem na Amigu1200 (motorola 68hc020 32bit) i program "max asembler" na nemačkom?! Naravno, dižem ruke od asm. programiranja (izvini Korak) :).
Sad se vi pitate čemu sve ovo gore pišem, a odgovor je jednostavan: nemam pojma!
Da ne bude da sam džabe krečio uradio sam jednostavan test nekih kompajlera, svi su komercijalni osim jednog. U pitanju je AVR familija kontrolera a programi (kompajleri) su: BascomAVR (bejzik), FastAVR (bejzik), CodeVisio (C) i WinAVR (C). Ovaj zadnji je gcc što će reći besplatan. Test program je jednostavan, for (next) petlja 0 do 255, vrednost se šalje na neki port a u okviru petlje sabiranje dve 16-bitne varijable. Rezultati su sledeći:
FastAvr: 390 byte, trajanje jednog ciklusa 5uS
Bascom: 770 byte, --------------------- 9uS
CodeVisin: 940 byte, ------------------- 5.2uS
WinAvr: 533 byte, -------------------- 1.5uS
Test kontroler mega16 na 8MHz.
Asembler nisam uvrstio u konkurenciju jer bi zbog autorove optimizacije i jednostavnosti programa bio "nedodirljiv" u oba pogleda (duzina hex koda i brzine).
Upotreba makroa u asembleru drastično smanjuje vreme pisanja programa i uz to poboljšava čitljivost istog. Svakome preporučujem da proba napisati asm program za omiljeni kontroler, mnogo toga se može naučiti o samom hardveru kontrolera.
Sa druge strane C je veoma rasprostranjen što ne mora značiti da je najbolji (VHS je pobedio BETA sistem bez obzira što je ovaj drugi bolji) a asembler i dalje ostaje privilegija "underground raje".
*___*