avrgcc s assemblerem
Miroslav Sinko
sinkomiro@rocketmail.com
Pátek Leden 18 12:25:10 CET 2008
Vyzera to hrozivo, to uznavam, ale pravidla su dobre zdokumentovane.
Ide o tom, ze v inline asm potrebujete previazanost s premennymi C a
nemozte len tak pouzivat lubovolne registre, lebo neviete, ci ich
nepouzil kompilator C (teda ak nechcete pushovat a popovat).
Previazanie s C premennymi v priklade, co som poslal: %A0 znamena
spodny byte z 0-teho parametra (C-ckova premenna "cnt" typu word)
Pouzitie registrov: potrebujem pomocnu 2-bytovu premennu, tak je
zapisana "r"((unsigned short) (delay_count), kde "r" oznamuje, ze sa ma
pouzit lubovolny register, teda 2, kedze je to unsigned short. On
kompilator pouzije tie, ktore ma volne. Pristup k jej bytom je v asm
potom cez %A2, %B2, lebo je uvedena ako 3.parameter v poradi.
No a v zapise su znakmi ':' oddelene
asm kod : vystupy : vstupy
Link na popis uz bol poslany, ale zopakujem:
http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
miro
--- Tomas Chvatal <tchvatal@ezop.cz> wrote:
> Prave tento zpusob zapisu me celkem odrazuje :-)
> Kazdopadne diky za odpoved.
>
> ----- Puvodní zpráva -----
> Od: "Miroslav Sinko" <sinkomiro@rocketmail.com>
>
>
> asm volatile ("\n"
> "L_dl1%=:\n\t"
> "mov %A0, %A2\n\t"
> "mov %B0, %B2\n"
> "L_dl2%=:\n\t"
> "sbiw %A0, 1\n\t"
> "brne L_dl2%=\n\t"
> "dec %1\n\t" "brne L_dl1%=\n\t":"=&w" (cnt)
> :"r"(time_ms), "r"((unsigned short) (delay_count))
> );
> }
>
>
> miro
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping
Další informace o konferenci Hw-list