Perhaps I'm being dense, but why not
CLC FIELD1(2),FIELD2
--
Tom Marchant
On Mon, 26 Feb 2024 09:47:29 -0500, David Eisenberg <[email protected]>
wrote:
>Well, it's a CLC (not an MVC)... but I understand your solution. With that
>approach, and PRINT NOGEN is in effect, I get this in the listing:
>
> Loc Object Code Addr1 Addr2
>0002AC D501 0000 0000 00000 00000
>
>and what I'm trying to do (if possible) is to show the relocatable addresses
>under Addr1 and Addr2 in the listing alongside the D501. I.e., I'd like to
>generate a single CLC instruction, so that it looks that way in the printed
>object code. (I realize that PRINT NOGEN would show the addresses in the
>expansion, but they still wouldn't appear on the same line as the CLC opcode.)
>So far, the best solution I've come up with is my approach # 2 below (a single
>DC statement) which produces:
>
> Loc Object Code Addr1 Addr2
>0002AC D501BE65BE63
>
>That's not bad, but the assembler treats it like a DC (which it is), and not a
>machine instruction... and it looks like a DC in the object code.
>
>The reason I'm generating the CLC in a macro is because the macro is doing
>much more than this. There are various macro keyword parameters that I haven't
>bothered showing here, and lots of analysis going on with the comparands
>before I generate the CLC. I genuinely believe that showing all those things
>here would only serve to complicate my question.
>
>David
>
>On Mon, 26 Feb 2024 13:44:17 +0000, Seymour J Metz <[email protected]> wrote:
>
>>Why? What are you trying to solve by wrappng the MVC in a macro?
>>
>> MVC 0(2),0
>> ORG *-4
>> DC S(&OP1)
>> DC S(&OP2)
>>
>>but, again, why?
>>
>>--
>>Shmuel (Seymour J.) Metz
>>http://mason.gmu.edu/~smetz3
>>עַם יִשְׂרָאֵל חַי
>>נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
>>
>>________________________________________
>>From: IBM Mainframe Assembler List <[email protected]> on
>>behalf of David Eisenberg <[email protected]>
>>Sent: Monday, February 26, 2024 8:22 AM
>>To: [email protected]
>>Subject: Macro parameters: parsing a relocatable address
>>
>>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