Az offtopic átirányítva innen.
Ezért:
IRP "See FOR."
IRPC "See FORC."
REPT "See REPEAT."
Mi a francnak erőltessem az elavult elnevezést? Egyébként még nincsenek kőbe vésve a nevek, csak nem akartam visszafelé menni az időben. Az új nevekről szerintem ránézésre jobban lehet érteni hogy mit is művelhetnek. Az irp nekem nem mond semmit, a for viszont igen.
Hát, ezt azzal indokolnám: Mert mást jelent.
A FOR: for VAR in LIST - legalábbis junikszos shell szintaksz szerint.
Annyiban igazad van, hogy elvileg ugyanaz. (De sajnálatos módon a MPASM és gpasm is a C szintax elemeit is belekeveri az asm leírásába. Ez azt eredményezi, hogy az inkább céül tudóknak látszólag könnyebb leírni valamit. Eközben meg hatalmas funkcióvesztés lép fel a valódi asm fordítókhoz képest.)
De mi a lényeg: Amíg a FOR egy kódrészlet ismételt végrehajtását jelenti, addig a REPT egy kódrészlet ismételt beillesztését jelenti - a lista elemeivel.
További side effectként a listavezérlés hatása is más - kellene legyen - a két direktívára. Csak az a baj, hogy a "modern" fordítók már ezt a funkcionalitást is elvesztették. Ezt láthatod a makróba ágyazott WHILE esetén is. A WHILE nem értelmezi az noexpand-ot. Kellene a LALL/SALL/XALL makró listavezérlés.
Egy rendes asm fordítónál a listavezérlés egy "párhuzamos réteg", amit szinte programozni lehet. Hatására a lista kinézete olyan lesz amilyet szeretnék.
A makrókról elég jó összefoglalót és példákat találhatsz pl. itt. Külön figyelmedbe ajánlom az IF1 és IF2 direktívákat! Ha rákeresel látni fogod, hogy elég sok helyen használják ezeket a direktívákat. Igaz, FORC is található. De azok nem olvasták ezt a commentet. ;)
Tegnapi döbbenetemben megfeledkeztem a lényegről! A konkatenálás hiányában (a #v() mint mackósajtban a brummogás) nem lesz igazán használható.IRPC Reg, LHU
xorwf Timer&Reg&, w
ENDM