[elektro] AVR GCC kezdő kérdés

Moczik Gabor pm_levlista at progzmaster.hu
Mon Jan 31 11:41:46 CET 2011


Norbert Berberovics wrote:
> Köszi a gyors reagálást.
> Most már tudom, miért nem akartam C-re átálni. : o )
> Ami asm-ben egyértelmű miért nem csináltak rá C-ben utasítást.
> 
> mondjuk egy ilyet:
> 
> a= a<< (PINC.4)   //és ez szépen beléptetné a port bitjeit egy változóba
> 
> És ennyi.......

ASM-ben belépteti?
Nem. Ott is ciklusba kell szervezni, csak ezeket a részeket nem idézted 
be az ASM kódba, csak azt a 3 részutasítást.

C-ben is ciklusba kell szervezni. Azért nincs rá utasítás, mert a 
lehetőségek száma nagy, balról jobbra vagy fordítva léptessen, az összes 
bitet vagy csak valamennyit, az elejétől vagy csak valahanyadiktól, stb...

for(i=0, inbuf=0; i<=7; i++) {
     inbuf|=SDI;
     inbuf<<=1;
}

Ezt vagy hasonlót ha lefordítod, látható lesz, hogy fog használni 
valamilyen CPU-specifikus shift utasítást.

Ugyanígy, ha leírod hogy x/16, rá fog jönni hogy 4 bittel jobbra kell 
shiftelni, nem fogja osztásra fordítani.

-- 
((( Móczik Gábor  )))--((( e|mail: pm-01 |@| progzmaster |.| hu )))
((( S.k.y.p.e.: moczik )))



More information about the Elektro mailing list