Benjamin,

I'm really struggling to understand... how would I use a DSECT and USING to 
solve this? I can certainly generate those in the macro, but I don't see the 
technique in this case.

David

On Mon, 26 Feb 2024 17:14:19 +0200, Binyamin Dissen 
<[email protected]> wrote:

>Generate a DSECT and USING.
>
>On Mon, 26 Feb 2024 08:22:00 -0500 David Eisenberg <[email protected]>
>wrote:
>
>:>I�m seeking some guidance if anyone is able to help. I�d like to write a 
>macro like this:
>:>
>:>&NAME    MYCLC &FIELD1,&FIELD2
>:>
>:>in which both &FIELD1 and &FIELD2 are relocatable addresses. It�s &FIELD1 
>that is of particular interest to me. &FIELD1 might be expressed as a 
>hard-coded displacement and base register, or a relocatable symbol� or it 
>could be an absolute symbol equivalent to a displacement, followed by a base 
>register� etc. I.e., it could be any valid relocatable address syntax. What 
>&FIELD1 will *not* have is an *explicit length.* The macro parameters will 
>specify valid relocatable addresses, and nothing more.
>:>
>:>My question: I�d like the MYCLC macro to generate a CLC instruction in which 
>the two parameters are compared to each other for a constant length of 2. So 
>far, the only ways I can think of to do this are:
>:>
>:>1. Parse &FIELD1 to figure out how the relocatable address is expressed, and 
>insert an explicit length of 2 to generate a valid CLC first operand. I would 
>do it that way, but (unless I'm missing something) it seems quite complex to 
>code.
>:>2. Generate this DC statement: DC X�D501�,S(&FIELD1,&FIELD2) . This seems to 
>work, but it�s a bit unattractive in a PRINT GEN (and it looks a bit odd in 
>the assembly listing, because the assembler doesn't treat it like a machine 
>instruction in the object code on the left side of the listing).
>:>
>:>I�m wondering if anyone can suggest a reasonable way to code option 1 above. 
>Can the macro assembler give me any help in parsing &FIELD1 so that I can 
>transform that parameter to insert an explicit length, regardless of how 
>&FIELD1 is expressed? Or is there some other approach that I haven�t 
>considered at all? Or should I just go with option 2 above?
>:>
>:>Please note that I don�t want the macro to generate more than one machine 
>instruction. One way or another, I just want the macro to generate a CLC for a 
>length of 2. (And I really do want the CLC located in the macro as opposed to 
>open code, because the macro does some analysis on the comparands prior to 
>generating the CLC.)
>:>
>:>Any advice would be appreciated... thank you!
>:>
>:>David
>
>--
>Binyamin Dissen <[email protected]>
>http://www.dissensoftware.com
>
>Director, Dissen Software, Bar & Grill - Israel

Reply via email to