<html><body>Ahoj,<br><br>ked si zvladol asembler a robil v nom 20 rokov, ako si pisal v prvom emaily, ktory som uz vymazal, tak to bude pre teba velmi jednoduche. Predpokladam, ze macroasembler poznas a mas zvladnuty. C je vo vseobecnosti nadstavba asembleru, taky inteligentnejsi generator kodu s implicitne impementovanimi funkciami pre matematicke operacie a doplneny o kniznice. Hlavna vec je suvislost medzi asemblerom a C. Z instrukcnej sady si treba napisat ekvivalenty medzi asemblerovskymi a c prikazmi. Typicky priklad je napr. djnz reg,navestie, co sa da napisat v c ako if(reg--) then goto navestie. Dalsim prikladom su jednoduche presuny medzi operandami a reg. mov a,(R0) sa da zapisat ako A = *R0, kde v r0 je navestie adresy premennej, v cecku je to pointer R0. Takych prikladov je viac. Dalej rozdiel medzi ASM a C je ten, ze C automaticky rozoznava typ premennej, kym v asembleri sa musite o to starat sam. Priklad unsigned int tmp, je premenna tmp so 16bitmi. Potom tmp++
, pripocita k tmp 1, v asembleri si musite napisat pricitanie 1 k 16 bitovemu operandu, teda increment nizsej slabiky, skontrolovat pretecenie, increment vyssej slabiky. C to generuje samo. Tychto prikladov je ovela viac a temer kazda konstrukcia v C ma svoj asm ekvivalent. Su konstrukcie kodu, ktore generuje c same, prikladom su cykly a podmienene skoky. Dalsia vec je predavanie parametrov a to je uz trochu implementacne zavisle od architektury cpu. Takze ked ste pochopil asm, C zvladnete bez najmensich problemov. Strukturovane programovanie v C pochopite tiez bez problemov. Takze potom pridu na rad periferie, to sa uz nenaucite hned ale problem moze byt v tom, ako su napisane include subory toho ktoreho prekladaca. Ci Vam bude stacit napisat napr. bit_flag = 1 alebo budete musiet pisat register.bit_flag = 1 a tak dalej. Ale to uz zvladnete sam, opat nie je to ziadna veda, akurat pri niektorych mcu (AVR, ARM) moze zapis nastavenia bitu v riadiacich registroch vyzerat dost,
ale teda dost neprehladne... Co sa budete musiet naucit su HW pragmy pre jednotlive architektury, teda napr. small, large - pamatove modely x51.<br><br>Co sa tyka prekladaca C asi budete robit s GNU C pre microchip, potom je HiTech, podla mna lepsi kompilator, ale nazory su rozne. Dolezite je, ze oba sa daju pustit v mode, kde su zakazane len niektore optimalizacie ale casove alebo obmedzenia velkosti kodu nie su.<br><br><br>A. <br><br><br>On Fri, 3 Dec 2010 19:29:49 +0100 (St?edn? Evropa (b?n? ?as))<br> "lm317" <lm317@centrum.cz> wrote:<br>> Zdravim podruhe, popravde receno jako cloveku, ktery se dosud o C <br>>ani C++<br>> vubec ale vubec nezajimal, mi unika rozdil, a doposud jsem zil v <br>>mylne<br>> predstave, ze je to jedno a to same :-) Bylo mi proste receno, at se <br>>co<br>> nejrychleji naucim "cecko pro Majkrocipy", takze predpokladam po <br>>vasich<br>> upozornenich, ze pujde o proste C.<br>> <br>> Dobre co s tim?<br>> <br
>> Uvazuji uz, ze bych se nejprve vrhnul jen na to C pres moji <br>>oblibenou (ac<br>> zastaralou) architekturu x51 a az po zvladnuti bych se zacal <br>>zaobirat<br>> PICkama. Nebo je to spatne a je lepsi obe mouchy zaplacnout naraz?<br>> <br>> Petr<br></lm317@centrum.cz></body></html>