Vlákno názorů k článku Osmibitové mikrořadiče AVR řady ATtiny a ATmega od Hugo - Skvele clanky ! Len tak dalej. Uz dlho sa chystam...

  • Článek je starý, nové názory již nelze přidávat.
  • 15. 3. 2011 14:21

    Hugo (neregistrovaný)

    Skvele clanky !
    Len tak dalej.
    Uz dlho sa chystam trochu povenovat AVR.
    Je z praxe nejaky velky rozdiel (velkost, efektivnost) v generovanom kode pisanom v C pre AVR a v AVR assembleri ? Predsa len dufam, ze ten prekladac bude mat ine kriteria na vysledny kompilovany kod, ako bezne C kompilatory.

  • 15. 3. 2011 14:37

    Mti. (neregistrovaný)

    C vyplodi kod o neco malo mene efektivni, nez by to udelal prumerny programator v assembleru, kdyby na to mel cas. :)

    Casove kriticke rutinu muzes vzdy napsat v assemberu, pokud mas tu potrebu.
    Navic za Tebe kompilator udela nektere upravy, ktere by v assembleru mely neprehledny zapis. (c za Tebe rozbali kratke cykly, nahradi procedury makry...)

    Ale pokud nedelas zrovna blikac pro decka na stromecek, c je vyrazne prehlednejsi.

  • 15. 3. 2011 14:47

    ondra.novacisko.cz (neregistrovaný)

    Budu se hádat, ale dobrý překladač Cčka dokáže vyrobit kód, který by se mohl srovnávat s profesionálním programátorem v assembleru. Hlavně jakkákoliv další optimalizace by už byla neúměrně drahá.

    Trochu lépe jsou na tom šablony v C++, ale jsou to procenta. Soudím hlavně ze zkušenosti,kolikrát musím výsledný kód číst a kolikrát jsou tam obraty, které jsou zaručeně efektivnější a které bych sám asi nevymyslel. Pokud překladač má přehled o celém programu, dokáže kolikrát lépe hospodařit s registry, než člověk, protože nemusí si nikde nechávat rezervu na budoucí rozšíření. Pro stroj není totiž problém kdykoliv nechat kód znovu přeložit na míru, zatímco programátor vždy bude omezen pracností jakéhokoliv budoucího přepisu.

  • 15. 3. 2011 16:38

    Mti. (neregistrovaný)

    No, hadat se samozrejme muzem, ale zrejme mame jen posunuty prah vnimani. :-) Otazkou je, jestli "profesionalni" programator, kdyz ma dany termin, je lepsi nebo horsi nez prumerny nadsenec jez ma na dany ukol cas. :-D

    Zrejme budeme narazet prave na ty mista, kde pisete "neumerne draha".

    Proto jsem psal to o tech rozbalenych cyklech a spol.
    Ale na druhou stranu jsou konstrukce, kde mam pocit, ze se v C "neumim vyjadrit dost presne".

    treba pocitadlo s limitem... (predpoklad: r3=1 ; s oblibou jsem takto obetoval na nulu a jednicku 2 registry r3 a r4 ; ne jak gcc r1, ktery porad pokazde znovu nastavuje... )

    add r16,r3
    sbc r16,0

    Nadherne je na tom to, ze to nepretece a trva to pokazde 2 takty v kteremkoliv pruchodu.

    jenze jak to napsat v c (konkretne gcc), aby to pochopilo spravne?
    if (r3<255) r3++;
    Nemam tu ted po ruce vhodne prostredi, ale necekal bych moc.

    Pro puvodniho tazatele bych napsal asi tolik: zalezi na co to chcete, ale v dusledku je dobre umet oboji. :-D Pro slozitejsi veci je prehlednost C k nezaplaceni. Schopnost pouzit assembler pro casove drsne rutiny je ovsem vyhoda.

  • 15. 3. 2011 16:47

    Mti. (neregistrovaný)

    jeste bych poznamenal, ze jsem pro avr v asm psaval ne pod oficialnim atmelim assemblerem, ale pouzival jsem avra, ktere umelo tuze mile veci s makry (vnorene pripadne i rekurzivni volani maker, volba makra podle parametru a podobne... takze to rozbalovani cyklu slo casto udelat pohodlne).

    No prvni pokusy s ethernetem byl zpusob jak najit motivaci ucit se c ... :-D (soucasny stav/moznosti atmeliho avrasm2 jiz nesleduji, necekam zazraky. Gcc mi vyhovuje, merici rutiny si tam v asm doklovu (az) kdyz to potrebuju)

  • 16. 3. 2011 9:53

    Smazaný profil

    Ja by som ti doporucil zacinat s AVR (8b) s assemblerom. Je to krasny jazyk a zide sa ti vediet ako CPU v principe funguje na takmer najnizsej urovni. Navyse vdaka include fajlom je mozna aj celkom slusna kompatibilita smerom hore (ak si das pozor, aj dole).