IAR AVR ASM

Jan 15, 2004 5 Replies

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.


15-Jan-04 19:50 Dimmy Timchenko wrote to All:

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.

ðpÉ×ÅÔ, All !

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.
19-Jan-04 16:33 Anatoly Marooschenko wrote to All:

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.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required