Ne tedd, az un AT&T asm szintaxis, amit a gcc hasznal (amugy kb minden cpu-nak, x86-nal is ...) azert kell neki, mert azon hint-ek alapjan tud optiamlizalni, es "latja" hogy az asm kod hogyan fugg ossze a C valtozoiddal stb amire hivatkozol, mivel errol tudnia kell. Szoval ettol lesz ilyen bonyolult a szintaxis, ez nem az AVR sajatossaga, hanem a GCC miatt van, meg hogy keverni akarod.
En sima AVR assemblert hasznalok, igaz akkor az egesz cucc asm lesz ... Ilyen pl az avra nevu, abban amit te irtal, az pl ilyesmi lehet:
LDI R0, 0
LDI R1, 0xFF
loop:
OUT PORTB, R0
OUT PORTB, R1
RJMP loop
Namost ennel van szofisztikaltabb megoldas is talan, de most nem ez a lenyeg, hanem a szintaxis
Amugy pl itt is lehet olvasgatni, vagy ez mar megvan?
http://www.avr-asm-tutorial.net/avr_en/index.htmlItt kicsit elmagyarazza, miert kell ez a "beteg" szintaxis a gcc-nek (epp x86-os peldan):
http://wiki.osdev.org/Interrupt_Service_Routines Most epp nem talalom, de volt egy "GCC inline assembly black magic" oldal, ahol talan pont a Linux kernelbol volt forras reszlet, es olyan durvan nezett ki, hogy azon versenyeztek, ki tud olvashatatlanabb es megerthetetlenebb reszleteket fellelni a neten
Ja, es ha full asm project, akkor viszont ugye neked kell megcsinalni az egeszet, szal a kod elejere pl az interrupt vector table stb, amivel C alatt nem torodsz. Mondjuk nem nagy cucc, optimalis esetben ha int stb sincs engedve, akkor egy szem RJMP utasitas a 0-as cimen. A masik lehetoseg, hogy koztes megoldas: van C es asm is, de nem egy forrason belul: object file-ra forditod mindkettot (asm-ot assemblerrel, C-t C forditoval) aztan linkeled ossze. Ennek hatranya a build mechanizmus kisse bonyolultabba valasa, illetve az, hogy elvesztesz nemi performanciat hogy nem "teljesen" inline a kod, max hivhatod mint fuggveny pl. Ja, es ebben az esetben ismerned kell a C fordito altal hasznalt "stack trukkoket" stb, mert meglepodsz a vegen
Ismet, ez nem AVR, ez minden platformon igy megy, x86-on is pl.