( bucko | 2023. 05. 08., h – 12:34 )

Találtatok nagyítóval egy speciális kivételt az ősidőkből, amiben van valami makró, ami nem is biztos, hogy jó lesz a kérdezőnek

Ez nem egészen igaz. Ha úgy tetszik, ezek az ősidők processzorai. Akkoriban még a gyártók megfelelő eszközöket biztosítottak és mindenki azokat használta. Nem volt millió féle opensource félig elkezdett program, mint manapság. - Sokan belekezdenek valamibe, aztán kiderül, hogy túl nagy falat a feladat. ;) - Emiatt nem nagyítóval kellet keresni, mert rendelezésre állt és akkoriban ezekkel az eszközökkel dolgoztam. (Ha úgy tetszik, ősidőkből származó ősember vagyok, mert 40 éve programozok assemblerben. :-D)

A kérdező nem igazán fogja az assembly mibenlétét. Az assembley nem más, mint mnemonic -> gépi kód. Ebből nem lehet "ha képes lenne több parancsot is értelmezni egy sorban" szintaxist kihozni. "Jó lenne valami high-assembler szintű de legalábbis jó makrókezeléssel, hibareportolással." vs. "z80asm: hibás kódot is lefordít hibaüzenet nélkül, makrókezelése kezdetleges". WTF high-assembler? A z80asm béta, már tartalmaz a magasabb szintű nyelvekből származó számábrázolást, tehát "osztályidegen". A macroassembler kezeli a std makrókat, de mi az a "jó makrókezelés"? Ilyet csak Columbó felőgyelő mondott a döbbent hallgatóságnak, mikor javasolták, hogy vegyen másik autót:

Van másik autónk, de azt a feleségem használja - csak bevásárlásra jó.

Szóval egy fordító lefordítja a kódot, a makrókat és hibát jelez, ha hibás a kód. Nincs "hibareportolás", mert a kétmenetes fordításból adódóan vagy meg tudja jelölni a hibás sorokat, vagy a verikális struktúrát érintő hibánál kiszáll.

Amit a "std" makrókezelésként nevezek a következőt tartalmazza: MACRO,  ENDM,  LOCAL,  REPT,  IRP,  IRPC, EXITM. Persze egyéb nyelvi támogatás sem árt, pl.: IFB, IFNB, IF1, IF2, stb.

Mondhatnánk, hogy a REPT -> for, IRP -> while, de az IRPC hiánya sok irkafirkát eredményez. :( Bizony, ez van, ha valaki C aggyal próbál assemblert írni. Mint említettem, a "modern assemblerek" hátránya a modern gondolkodás adta kontraszelekció: A sok új fícsör mellett eltűnnek azok a funkciók, amit a hozzáértők - nem véletlenül - beleraktak.

A makró nem az ördögtől való. Ismétlődő műveletsort, adatdefiníciót lehet rövidíteni, de ami  a legfontosabb, megkönnyíti az olvashatóságot.

Írtam egy Wyse60 terminált, amelyben jópár klaviatúra map-et kellett definiálni. A fordító TASM és volt XMS, EMS, valamint speciális alaplappal és DRDOS használatával 890kB DOS memória. A makrók miatt éppenhogy lefordult!

Ami érdekes számomra az incbin. Lehet ilyet is, de nem törik le a keze senkinek, ha egyszer forrássá alakítja pl. a képeket. Pach esetén - ha már linux - tudom ajánlani az awk + xxd kombót. Nekem működik. ;)