Co jsou pseudoinstrukce, jak se používají a kde je nalézt?

Já jsem třeba zilog_intelista co ale s jednočipama začínal na picech a pak se zase vrátil zpět:-) Pseudo a mcra jsem používal taky, když to zjednodušilo život. (hlavně macra)

Myslím že debata jakej cpu a jakej jazyk je o ničem. Dobrej programátor by měl umět zvolit otimální procesor a jazyk s ohledem na aplikaci a efektivitu vývoje pokud se jedná o komerční použití. Pokud je to hobby, je to jedno - tam jde o to umořit co nejvíc volnýho času ke spokojenosti hráče.

Nicméně Balu: V C máš HW pod kontrolou dostatečně ve většině situací… tuhle pózu jsem zastával taky. Asm používám jen když je potřeba.

A ještě uvedu příklad proč C i na stupidních mcu používám raději než asm. Za prvé střídám platformy a nechci se pořád rozkoukávat. Za druhé čas - dokonce i když je to hobby - zrovna nedávno mě kámoš požádal o nějakou blbinu do auta (vstupy/vystupy/lcd/tlacitka) . HW si udělal sám a na mě zbyl jen soft. Dali jsme tam AT89S52. Napsaný to bylo v čistém C zhruba za 3 večery a stejně má cpu průmernej overhead 15%. Kdybych to psal v asm sežralo by mi to týden (kámoš chtěl userfriendly interface). Musel bych odmítnout z nedostatku času…
Tož tak.

to Radius:

Chtěl jsem jen vyjádřit názor, že používat céčko není kanón na vrabce. Ano, vyšší jazyk má nároky vyšší než assembler a vím proč, nicméně ho používám, protože mi zjednodušil pgm život. Navíc u vyšších řad je to nutnost.
Assembler nezatracuji, protože mám rád kontrolu nad tím, co se děje a u kritických aplikací to jinak nejde.
Zmiňoval jsi Zilogy. Já začínal na 8035 a pak jsem skočil na Z80 a vše okolo. Pak šly PICy a vyhovovaly mi nejvíc. Myslím ale, že jsem univerzál, respektive se o to snažím podle toho, co je pro danou aplikaci nejlepší. U prototypování to ani jinak nejde a to nás živí.
Takže pokud někdo postaví otázku: C i do malých mikrokontrolérů? Pokud se tam vejde a maká jak má, tak proč ne? Čas mi to šetří a můžu ho s určitými úpravami relativně snadno přeportovat i na jiné mikrokontroléry.
Souhlasím s Tebou, že bavit se o tom, který procesor a jazyk je nejlepší je zhovadilost. Prostě ten, který do aplikace sedí nejlépe!!!

PepinoCz: Takže si vlastně rozumíme :wink:

Ja len trochu k tomu C-cku.
Casto sa prizvukuje, aky je vysledok v C-cku pomaly a naboptnaly.

Moja cerstva skusenost. Bolo treba spravit delicku signalu z IRC cez 80kHz. To znamena, ze nestacilo iba oba signaly delit ale tiez kontrolovat suslednost oboch signalov. Jedna uroven trvala najkratsie 6.25us. Uz dopredu to bola uloha skor na HW riesenie, ale cez vikend suflik vhodne svaby nevydal, takze bolo treba riesit veci v MCU.
Odhadoval som, ze to bude musiet byt program v ASM, ale najprv pre overenie funkcionality som si ho najprv pre prehladnost spravil v C-cku. Je pravda ze nie na vasich 4 takty trvajucich instrukciach pod poklickou PIC ale na AVR s instrukciou na takt (toto nie je platena :slight_smile: ] reklama, jednoducho kazdy ma to svoje).

Na moje velke pocudovanie, vysledna prelozena slucka (v ktorej sa zaroven pravidelne kompletne nastavovali vsetky periferie kvoli moznej zmene nastavenia kvoli EMC v priemyselnom zarusenom prostredi) trvala 1.84us pri 18.43MHz Xtale. Vysledny hex zaberal 228B. Kazda uroven bola testovana minimalne 3x.

Potom sa vsak ukazalo, ze treba program doplnit este o dalsie ficury. Tie v C-cku trvali 2.82us/284B.
Tak som sa rozhodol, ze to prepisem do ASM lebo kazda desatina mikrosekundy sa ratala.

No a cuduj sa svete, dosiahol som cas 2.78us a progam zaberal 278B.

Suma sumarum, program v C-cku znamenal o 1.4% pomalsi vysledok za cenu 2.15% dlhsieho kodu. Nehovorim o tom, ze program v C je daleko prehladnejsi a udrziavatelnejsi. Nevidim ziaden dovod programovat v ASM. Apropo, toto nie je moja jedina skusenost s porovnanim vysledku v ASM a C-cku. Samozrejme, v tom cesku treba programovat vediet, a napriklad premenne v takto malych projektoch treba definovat ako napriklad

register uint8_t cnt1, cnt2;

prekladac poslusne umiestni premenne do registrov a nerobi zbytocne presuny z RAM a do RAM. Musim samozrejme vediet, kolko tam tyuch registrov je, ale uz si nemusim pamatat, ktore registre mozem vyuzit ako. O to sa stara prekladac.

Preto by som odporucal C-cka sa nebat a naucit sa ho obzvlast pre jeho vyuzitie cez cele spektrum rodin MCU.

Tu si myslim, ze niet co riesit. V inom ako v C (pri pouziti dobreho prekladaca) nema zmysel programovat. Teda samozrejme ak pouzivate take efektivne prekladace ako mame my na AVR (GCC).

Nie je pravda, ze C nejakym sposobom osetruje HW. Pravda je, ze absolutne ziadnym. Ani pri ASM a ani pri C-cku sa bez studia HW nik nezaobide. Aj v C-cku treba pouzit prikazy, ktore zapisuju priamo do vyhradenych registrov jednotlive bity pre nastavenie periferii. To je cela pravda. Mozu sa maximalne vyuzit funkcie, ktore robia nejake prednastavenie bez potreby poznania bitov HW, ale to je uz C-ckova nadstavba, nie samotne a hole prikazy C-cka. Tych staci vediet tak do dvanast, co je menej ako pocet instrukcii PIC-iek.

Prajem krasny vecer a vela uspechov pri tvorbe vlastnych aplikacii.

Myslím Martine že nosíš dřevo do lesa (hodně dřeva) :smiley:
Stejně podstatnější než všechno tohle co bylo řečeno , je aby se lidi co do toho jdou naučili myslet jako programátoři - dost často tu čtu jak někdo kdo sotva dočetl syntaxi C lepí k sobě hromady cizího kódu aniž by dokázal sám napsat správně logický výraz a pak mu to tady léčíte - prostě neumí provést dekompozici problému tak aby se dal zprogramovat.

No to vieš… Teraz keď sa blížia vianoce som z tých vyrúbaných lesov celý paf, tak sa snažím nosiť drevo opačným smerom :wink:

Aj keď som si moc nevšimol, že by tu niekto priniesol konkrétne porovnanie dvoch rôznych prístupov k programovaniu (bez ohľadu na platformu) a tak trochu sa ASM mystifikuje. Ale to nevadí.

Jedlička, smrek, jedlička, smrek, jedlička smrek, …

:slight_smile: :slight_smile: :slight_smile:

Tuhle zkušenost by si měl programátor embedded věcí udělat sám.

Když srovnání tak:
Třeba hodně velkej rozdíl se dá zanamenat mezi C a ASM když se jedná o DSP aplikace na DSP procesorech. Bez speciálních knihoven které respektují konkrétní architektůru procesoru nejsou výsledky nic moc. Tady je někdy ASM jediná cesta.