Csak kiragadva néhány dolgot, szép az idő, nem írok hosszan. ;) Valóban nem foglalkozom lehetőség szerint makrókkal. Egy esetben használtam: volt olyan, amikor a gputils az adott processzor összes utasítását nem ismerte. Ezeket megírtam makróként, a definíciós részben az operandus maszkolása, shiftelése egy-két db-ben, aztán a kódot lehettett írni, mintha mi sem történt volna. Bár valami sed-del történő előfeldolgozásra is szükségem volt, ne kérdezd, hogy miért.
Azért írok assembly-ben C helyett, mert a PIC nagyon picike kontroller. Pici a core, az utasításkészlet, kevés a memóriája, legyen az adat illetve programtár. Ilyen környezetben szeretek mindent kézben tartani. Ráadásul assembly-ben lelkiismeret-furdalás nélkül megteszem azt, hogy két 6 bites változót egy-egy byte alsó 6 bitjén tárolok, míg egy 4 bites változót ugyanezen két byte fennmaradó felső 2-2 bitjén. Mondhatod, hogy megszálottság, de pókerarccal megcsinálom, viszont C-ben ez némileg fájdalmasabb volna. (Az USB-s projectem assembly kódjában láthatsz rá példát. ;) )
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE