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