C nebo ASM?

Jan Waclawek konfera@efton.sk
Pátek Květen 22 10:19:37 CEST 2009


>Kontrolni soucet pole v ASM je na PIC18 podstatne rychlejsi, Cecko od =
>Hitechu to udela strasne pomale. Mne se jedna pouze o jednu vec a to =
>jestli dokaze nejaky kompilator na jednocipech toto plne optimalizovat. =
>Pripadne jak by to vypadalo na PC.
>Mam tady knihu "Dokonaly kod" a v ni se tvrdi ze psani v asembleru je =
>dnes zbytecne a kod v C je stejne rychly, (A taky se tam nedoporucuje =
>pouzivat pointery).

"Stejne rychly" je samozrejme nezmysel, to vsetko zavisi od kontextu. Aj v asembleri sa da pisat zle, ale vo vseobecnosti program napisany vo vyssom jazyku je pomalsi a vacsi ako ten isty program napisany v asembleri *skusenym programatorom*. To je dan za pohodlnost, bodka. Vo vacsine pripadov to vsak nevadi, resp. je to akceptovane ako primerany kompromis medzi pohodlnostou a spotrebovanymi prostriedkami (procesorovy cas, pamate); v tej mensine pripadov ked to vadi, sa obvykle jedna o nejaky kratky avsak kriticky usek programu, kde sa to oplati prepisat v asembleri alebo robit to saskovanie typu "napisem to niekolkymi sposobmi a pozriem sa, ktory z nich prekladac prelozil najlepsie".

Prekladac (resp. jeho optimalizator) je program, ktory sa snazi pochopit, co clovek nejakym zapisom myslel, a ten potom zoptimalizovat. Niekedy to proste uhadnut z toho zapisu nejde, a niekedy ten optimalizator je nedokonaly. Ako Andrej uz niekolkokrat pisal, HiTech ma tie prekladace dva, a pokial viem, su vyrazne odlisne, najma co sa optimalizacie tyka; tak mozno by ste sa mali obzriet aj v tomto smere.

Dalej drviva vacsina kniziek a takychto vseobecnych tvrdeni v nich su PC-centricke a pre jednocipy (myslim tym "small embedded", nie zlepence (SoC) typu ARM a spol.) maju len obmedzenu platnost. Napriklad v dnesnej dobe je vzhladom na extremnu zlozitost a vyraznu odlisnost a rychlu premenlivost jednotlivych verzii x86 len hrstka ludi, ktori si dali namahu plne pochopit co a ako v nich funguje, takze jednoducho neexistuju *skuseni programatori* v asm pre sucasne x86, ktori by mohli sutazit s hoci aj priemernym prekladacom; avsak u 8-bitov je to naopak.


JW





Další informace o konferenci Hw-list