Hi All.
á ×ÏÚÍÏÖÎÏ ÌÉ × ÓÁÂÖÅ×ÙÈ ÍÁËpÏÓÁÈ ÄÅÌÁÔØ ×ÙÞÉÓÌÅÎÉÅ ÚÎÁÞÅÎÉÊ ×ÙpÁÖÅÎÉÊ É ËÏÎËÁÔÅÎÁÃÉÀ ÜÔÉÈ ÚÎÁÞÅÎÉÊ?
HÁÐpÉÍÅp, × 2500AD Ñ ÍÏÇ ÓÄÅÌÁÔØ ÔÁË:
macro v1 var 10 v2 var 12 lbl|<v1>|<v2+1>
endm
É ÐÏÌÕÞÉÔØ ÍÁËpÏpÁÓÛÉpÅÎÉÅ
lbl1013
Dimmy.
Hi All.
HÁÐpÉÍÅp, × 2500AD Ñ ÍÏÇ ÓÄÅÌÁÔØ ÔÁË:
macro v1 var 10 v2 var 12 lbl|<v1>|<v2+1>
endm
lbl1013
Dimmy.
DT> А возможно ли в сабжевых макpосах делать вычисление значений выpажений и DT> конкатенацию этих значений?
DT> Hапpимеp, в 2500AD я мог сделать так:
DT> macro DT> v1 var 10 DT> v2 var 12 DT> lbl|<v1>|<v2+1>
DT> endm
DT> и получить макpоpасшиpение
DT> lbl1013
Мне конкатенация нужна была только в макросах, там макроаргументы подставляются по номерам через ''
join macro a,b \1\2: endm
Можно ли при этом ещё и сначала вычислить - не помню искал ли такое :-)
wbr,
Hi Oleksandr.
16 Jan 2004, 23:09, Oleksandr Redchuk writes to Dimmy Timchenko:DT> á ×ÏÚÍÏÖÎÏ ÌÉ × ÓÁÂÖÅ×ÙÈ ÍÁËpÏÓÁÈ ÄÅÌÁÔØ ×ÙÞÉÓÌÅÎÉÅ ÚÎÁÞÅÎÉÊ ×ÙpÁÖÅÎÉÊ É DT> ËÏÎËÁÔÅÎÁÃÉÀ ÜÔÉÈ ÚÎÁÞÅÎÉÊ?
OR> íÎÅ ËÏÎËÁÔÅÎÁÃÉÑ ÎÕÖÎÁ ÂÙÌÁ ÔÏÌØËÏ × ÍÁËpÏÓÁÈ, ÔÁÍ OR> ÍÁËpÏÁpÇÕÍÅÎÔÙ ÐÏÄÓÔÁ×ÌÑÀÔÓÑ ÐÏ ÎÏÍÅpÁÍ ÞÅpÅÚ ''
OR> join macro a,b OR> \1\2: OR> endm
íÎÅ ÔÏÖÅ × ÍÁËpÏÓÁÈ ÎÕÖÎÁ, ÎÏ ÐÏ-ÄpÕÇÏÍÕ, ÄÌÑ Á×ÔÏÍÁÔÉÞÅÓËÏÊ ÇÅÎÅpÁÃÉÉ ÍÅÔÏË ÐÏ ÕpÏ×ÎÀ ×ÌÏÖÅÎÎÏÓÔÉ É ÎÏÍÅpÕ ÍÁËpÏÓÁ. HÏ, Õ×Ù, ÐÏÈÏÖÅ, ÎÅ ÓÏÏÂpÁÚÉÌÉ êáò-Ï×ÃÙ. èÏÔÑ pÅÁÌÉÚÏ×ÁÔØ ÔÁËÏÅ ÓÏ×ÓÅÍ ÎÅÓÌÏÖÎÏ...Dimmy.
DT> á ×ÏÚÍÏÖÎÏ ÌÉ × ÓÁÂÖÅ×ÙÈ ÍÁËpÏÓÁÈ ÄÅÌÁÔØ ×ÙÞÉÓÌÅÎÉÅ ÚÎÁÞÅÎÉÊ ×ÙpÁÖÅÎÉÊ É DT> ËÏÎËÁÔÅÎÁÃÉÀ ÜÔÉÈ ÚÎÁÞÅÎÉÊ?
DT> HÁÐpÉÍÅp, × 2500AD Ñ ÍÏÇ ÓÄÅÌÁÔØ ÔÁË:
DT> macro DT> v1 var 10 DT> v2 var 12 DT> lbl|<v1>|<v2+1>
DT> endm
DT> É ÐÏÌÕÞÉÔØ ÍÁËpÏpÁÓÛÉpÅÎÉÅ
DT> lbl1013
ñ ÄÅÌÁÀ ÔÁË:#define Def2Name(N1,N2) N1##N2 #define Def3Name(N1,N2,N3) N1##N2##N3
Def2Name(aaa_, Name1) = value1 ;ðpÉÍÅÞÁÎÉÅ: Def2Name/Def3Name ÐÉÓÁÔØ Def3Name(bbb_,ccc_, Name1) = value2 ; Ó ÐÅp×ÏÊ ÐÏÚÉÃÉÉ × ÓÔpÏËÅ.
;÷ pÅÚÕÌØÔÁÔÅ ÐÏÌÕÞÉÍ: ; aaa_Name1 =value1 ; bbb_ccc_Name1 =value2
ó Õ×ÁÖÅÎÉÅÍ, Anatoly.DT>> macro DT>> v1 var 10 DT>> v2 var 12 DT>> lbl|<v1>|<v2+1>
DT>> endm
DT>> и получить макpоpасшиpение
DT>> lbl1013
AM> #define Def2Name(N1,N2) N1##N2 AM> #define Def3Name(N1,N2,N3) N1##N2##N3
AM> Def2Name(aaa_, Name1) = value1 ;Пpимечание: Def2Name/Def3Name AM> писать AM> Def3Name(bbb_,ccc_, Name1) = value2 ; с пеpвой позиции в AM> стpоке.
AM> ;В pезультате получим: AM> ; aaa_Name1 =value1 AM> ; bbb_ccc_Name1 =value2
Не выйдет. "С-шный" препроцессинг идёт до ассемблирования, а DT нужно чтобы в следующем макросе было сделано v2 var v2+1 и ниже сгенерировалось lbl1014
И я даже знаю, зачем ему это нужно :-)
2DT: всё же взгляни на AS, раз уж ты предпочитаешь писать на асме только.У него есть ещё такое понятие, как именованные стеки периода компиляции. Т.е. ты можешь завести стек с нужным именем и в одних макросах заталкивать туда метки/адреса/всякие_значения а в других макросах - выталкивать. Для создания управляющих конструкций - самое оно, это тебе любой фортер подтвердит :-)
wbr,
Hi Oleksandr.
19 Jan 2004, 23:58, Oleksandr Redchuk writes to Anatoly Marooschenko:OR> É ÎÉÖÅ ÓÇÅÎÅpÉpÏ×ÁÌÏÓØ OR> lbl1014
OR> é Ñ ÄÁÖÅ ÚÎÁÀ, ÚÁÞÅÍ ÅÍÕ ÜÔÏ ÎÕÖÎÏ :-)
:)
OR> 2DT: ×ӣ ÖÅ ×ÚÇÌÑÎÉ ÎÁ AS, pÁÚ ÕÖ ÔÙ ÐpÅÄÐÏÞÉÔÁÅÛØ ÐÉÓÁÔØ ÎÁ ÁÓÍÅ OR> ÔÏÌØËÏ.
ëÔÏ ÓËÁÚÁÌ ÐpÏ "ÔÏÌØËÏ"? HÁÏÂÏpÏÔ, IAR-Ï×ÓËÉÊ ËÏÍÐÉÌÑÔÏp ÍÎÅ ÐÏÎpÁ×ÉÌÓÑ, Á ÅÓÌÉ ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÅ-ËÁËÉÅ ÐÌÀÓÏ×ÙÅ ÆÉÞÉ, ÍÏÖÎÏ ÐÉÓÁÔØ ÜÆÆÅËÔÉ×ÎÏ, ÞÉÔÁÂÅÌØÎÏ É ×ÐÏÌÎÅ ÎÁģÖÎÏ. ðpÏÓÔÏ ÎÁ AVR-ÓËÏÍ ÁÓÍÅ, ÄÌÑ ×ËÌÀÞÅÎÉÑ × ÑpÏ×ÓËÉÊ ÐpÏÅËÔ, Ñ ÎÁÐÉÓÁÌ ÐpÏÇpÁÍÍÎÙÊ "ÍÁÓÓÉ× UART"-Ï×. èÏÔÅÌÏÓØ ÓÄÅÌÁÔØ ÜÔÏ ËpÁÓÉ×Ï. :)OR> õ ÎÅÇÏ ÅÓÔØ Åݣ ÔÁËÏÅ ÐÏÎÑÔÉÅ, ËÁË ÉÍÅÎÏ×ÁÎÎÙÅ ÓÔÅËÉ ÐÅpÉÏÄÁ OR> ËÏÍÐÉÌÑÃÉÉ. ô.Å. ÔÙ ÍÏÖÅÛØ ÚÁ×ÅÓÔÉ ÓÔÅË Ó ÎÕÖÎÙÍ ÉÍÅÎÅÍ É × ÏÄÎÉÈ OR> ÍÁËpÏÓÁÈ ÚÁÔÁÌËÉ×ÁÔØ ÔÕÄÁ ÍÅÔËÉ/ÁÄpÅÓÁ/×ÓÑËÉÅ_ÚÎÁÞÅÎÉÑ Á × ÄpÕÇÉÈ OR> ÍÁËpÏÓÁÈ - ×ÙÔÁÌËÉ×ÁÔØ.
÷ÅÝØ! :) õ ÍÅÎÑ ÜÔÏÔ AS ÄÁÖÅ ÇÄÅ-ÔÏ ×ÁÌÑÅÔÓÑ. HÏ ÌÉÎËÏ×ÁÔØ ÅÇÏ Ó ÑpÏÍ ÂÕÄÅÔ ÇÅÍÏppÏÅÍ.Dimmy.
Have something to add? Share your thoughts — no account required.
Ask the community — no account required