Oppolzer - Informatik / Blog


Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie

ASSEMBLER-L - Sinnvolle Makroparameter (Länge, Adresse der Länge)

Subject:

Re: Some Help with Conditional Assembly

From:

Bernd Oppolzer <bernd.oppolzer@T-ONLINE.DE>

Reply-To:

IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU>

Date:

2013.11.03 14:18:26


In my opinion, this is the most valuable suggestion.

Because: the two cases (1: the macro gets a length directly or 2: the address of
a fullword, where it can find the length) are completely different things. So I
would suggest that there are two different mutual exclusive parameters, for
example L= and LADR=

You could then specify:

L=200
L=equate_symbol
L=(5)  register contains length

LADR=fullword_address
LADR=(5)   register contains fullword address

The responsibility for the correct usage of the macro is up to the caller.
Keep it simple ...

Kind regards

Bernd



Am Samstag, 2. November 2013 20:00 schrieben Sie:
> You should consider how IBM macros such as STORAGE handle this
> situation.  It requires an absolute value for LENGTH, and if you want to
> generate it dynamically, or get it from a memory location, then the user
> will just have to get the value into a register himself.  The two
> options are an absolute value, or a register (indicated by parentheses).
>
> If you must provide both options, either use a different operand (say,
> ALENGTH=), or a cryptic option (such as LENGTH=(*,address); or just
> parentheses if register notation isn't needed). Generally, though,
> having such flexibility is not worth saving the user 1 instruction.
>
> Ultimately, there is no completely valid way for a macro to determine
> whether a symbol is intended to be the value or the address of the
> value. In fact, there's not any solid reason why a bare number couldn't
> be a valid address.
>
> S.
>
> On 11/2/2013 11:39, E.J. wrote:
> > I have a simple macro
> >
> >          AMOVE  &L=LENGTH,&S=SOURCE,&T=Target
> >          L     R15,&L              .Length Of Move
> >      ...
> >      ...
> >          MVCL  Ra,Rb
> >          MEXIT
> >          MEND
> >
> > In a Macro I wish to generate 3 different instructions depending on the
> > value supplied for &L.
> >
> > If I specify AMOVE L=LENGTH
> > I want the macro to generate a LOAD Of a Full Word
> >         L Rz,LENGTH
> >
> > LENGTH DS F
> >
> > If I Specify AMOVE L=32767
> > I want the macro to generate a Load Addres
> >         LA  Rz,32767
> >
> > If I specify AMOVE  L=EQUATE
> > I want the macro to generate a Load Address of
> >         LA  Rz,EQUATE
> >
> > EQUATE EQI (*-BEGIN)
> >
> >
> > Could someone please provide an example as to how to test for
> > the conditions above in a Macro.
> >
> > P.A.
> > *******************************

Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie