Re: Complex immediate fields
When I compose a reply in Gmail, I have a fixed width font option. Does it come through below? (It would be really swell if the Assembler List knew about a fixed-width font for such examples.) LISTUSE MAIN ESD=0001 LOC= LEN=01000 REG=F OFF=0 LAB= 00 (1/12)10 WIPE BUF,C'A' 00 4100F01010(1/3)11+ LA0,BUF 04 A7180200 (1/4)12+ LHI 1,L'BUF 08 C029C10000(1/5)13+ LFI 2,C'A'*X'100' 0E 0E02 (1/6)14+ MVCL 0,2 10 (1/14)16 BUF DSCL512 000210 (1/15)17 END On Fri, Mar 29, 2024 at 4:47 PM Dan Greiner wrote: > The example I illustrated with the macro does not appear to have the > overflow issue that Robert mentions ... at least, not with the z390 > assembler. A slightly modified example (with LHI instead of LA) follows: > > Assembler Listing > 00(1/1)1 MACRO > 00(1/2)2WIPE > , > 00(1/3)3LA0, > 00(1/4)4 LHI > 1,L' > 00(1/5)5 LFI > 2,*X'100' > 00(1/6)6 MVCL 0,2 > 00(1/7)7 MEND > 00(1/9)8 MAIN CSECT > 00 (1/10)9 USING MAIN,15 > LISTUSE MAIN ESD=0001 LOC= LEN=01000 REG=F OFF=0 LAB= > 00 (1/12)10 WIPE > BUF,C'A' > 00 4100F01010(1/3)11+ LA0,BUF > 04 A7180200 (1/4)12+ LHI 1,L'BUF > 08 C029C10000(1/5)13+ LFI > 2,C'A'*X'100' > 0E 0E02 (1/6)14+ MVCL 0,2 > 10 (1/14)16 BUF DSCL512 > 000210 (1/15)17 END > > (It would be really swell if the Assembler List knew about a fixed-width > font for such examples.) >
Re: Complex immediate fields
Wow. Truly impressive. Mike Shaw MVS/QuickRef Support Group Chicago-Soft, Ltd. On Fri, Mar 29, 2024, 7:48 PM Ngan, Robert (DXC Luxoft) wrote: > When I first saw "Complex immediate fields", I thought of this code one of > our emulation macros used to generate: > > CGIJL R01,132-(L'BKwa_Module+1+L'BK_LPAOS+1),BK250 > + CGHI R01,(1-132-(L'BKwa_Module+1+L'BK_LPAOS+1))-((132-(L'X > + BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+256-132-(L'BKX > + wa_Module+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BK_LX > + PAOS+1))/256)*256)+256)/256)*256)/128))*(((132-(L'BKwa_MX > + odule+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BK_LPAOSX > + +1))/256)*256)+256-132-(L'BKwa_Module+1+L'BK_LPAOS+1X > + ))-((132-(L'BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+256)/X > + 256)*256)+132-(L'BKwa_Module+1+L'BK_LPAOS+1))-((132-X > + (L'BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+256-132-(LX > + 'BKwa_Module+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BX > + K_LPAOS+1))/256)*256)+256)/256)*256)/128)*132-(L'BKwX > + a_Module+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BK_LPX > + AOS+1))/256)*256)+256-132-(L'BKwa_Module+1+L'BK_LPAOX > + S+1))-((132-(L'BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+25X > + 6)/256)*256)-256)+((132-(L'BKwa_Module+1+L'BK_LPAOS+1))+X > + 2147483520)*0+((132-(L'BKwa_Module+1+L'BK_LPAOS+1))-2147X > + 483520)*0Emulated z10 CGIJL instruction > + JLBK250 ... > > > Robert Ngan > DXC Luxoft > > -Original Message- > From: IBM Mainframe Assembler List On > Behalf Of Seymour J Metz > Sent: Friday, March 29, 2024 11:57 > To: ASSEMBLER-LIST@LISTSERV.UGA.EDU > Subject: Complex immediate fields > > Back in he Assembler XF era I would code something like > > LAR0,L'DEST > LAR1,DEST > XRR15,R15 > ICM R15,8,=C' ' > MVCL R0,R14 > > On current hardware there is an IILF (LFI) instruction, and I would like > to use it instead of the XR/ICM sequence. I consider > > LFI R15,X'4000' > > to be ugly, and would like to be able to either use an immediate field > combing CL1 and XL3 pieces or to refer to an EQU defining that combination. > Is there any way to do that in HLASM? > > > > -- > Shmuel (Seymour J.) Metz > http://mason.gmu.edu/~smetz3 > עַם יִשְׂרָאֵל חַי > נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר > > >
Re: Complex immediate fields
When I first saw "Complex immediate fields", I thought of this code one of our emulation macros used to generate: CGIJL R01,132-(L'BKwa_Module+1+L'BK_LPAOS+1),BK250 + CGHI R01,(1-132-(L'BKwa_Module+1+L'BK_LPAOS+1))-((132-(L'X + BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+256-132-(L'BKX + wa_Module+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BK_LX + PAOS+1))/256)*256)+256)/256)*256)/128))*(((132-(L'BKwa_MX + odule+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BK_LPAOSX + +1))/256)*256)+256-132-(L'BKwa_Module+1+L'BK_LPAOS+1X + ))-((132-(L'BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+256)/X + 256)*256)+132-(L'BKwa_Module+1+L'BK_LPAOS+1))-((132-X + (L'BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+256-132-(LX + 'BKwa_Module+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BX + K_LPAOS+1))/256)*256)+256)/256)*256)/128)*132-(L'BKwX + a_Module+1+L'BK_LPAOS+1))-((132-(L'BKwa_Module+1+L'BK_LPX + AOS+1))/256)*256)+256-132-(L'BKwa_Module+1+L'BK_LPAOX + S+1))-((132-(L'BKwa_Module+1+L'BK_LPAOS+1))/256)*256)+25X + 6)/256)*256)-256)+((132-(L'BKwa_Module+1+L'BK_LPAOS+1))+X + 2147483520)*0+((132-(L'BKwa_Module+1+L'BK_LPAOS+1))-2147X + 483520)*0Emulated z10 CGIJL instruction + JLBK250 ... Robert Ngan DXC Luxoft -Original Message- From: IBM Mainframe Assembler List On Behalf Of Seymour J Metz Sent: Friday, March 29, 2024 11:57 To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Complex immediate fields Back in he Assembler XF era I would code something like LAR0,L'DEST LAR1,DEST XRR15,R15 ICM R15,8,=C' ' MVCL R0,R14 On current hardware there is an IILF (LFI) instruction, and I would like to use it instead of the XR/ICM sequence. I consider LFI R15,X'4000' to be ugly, and would like to be able to either use an immediate field combing CL1 and XL3 pieces or to refer to an EQU defining that combination. Is there any way to do that in HLASM? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
Re: Complex immediate fields
The example I illustrated with the macro does not appear to have the overflow issue that Robert mentions ... at least, not with the z390 assembler. A slightly modified example (with LHI instead of LA) follows: Assembler Listing 00(1/1)1 MACRO 00(1/2)2WIPE , 00(1/3)3LA0, 00(1/4)4 LHI 1,L' 00(1/5)5 LFI 2,*X'100' 00(1/6)6 MVCL 0,2 00(1/7)7 MEND 00(1/9)8 MAIN CSECT 00 (1/10)9 USING MAIN,15 LISTUSE MAIN ESD=0001 LOC= LEN=01000 REG=F OFF=0 LAB= 00 (1/12)10 WIPE BUF,C'A' 00 4100F01010(1/3)11+ LA0,BUF 04 A7180200 (1/4)12+ LHI 1,L'BUF 08 C029C10000(1/5)13+ LFI 2,C'A'*X'100' 0E 0E02 (1/6)14+ MVCL 0,2 10 (1/14)16 BUF DSCL512 000210 (1/15)17 END (It would be really swell if the Assembler List knew about a fixed-width font for such examples.)
Re: Complex immediate fields
The example I illustrated with the macro does not appear to have the overflow issue that Robert mentions ... at least, not with the z390 assembler: Assembler Listing 00(1/1)1 MACRO 00(1/2)2WIPE , 00(1/3)3LA0, 00(1/4)4 LHI 1,L' 00(1/5)5 LFI 2,*X'100' 00(1/6)6 MVCL 0,2 00(1/7)7 MEND 00(1/9)8 MAIN CSECT 00 (1/10)9 USING MAIN,15 LISTUSE MAIN ESD=0001 LOC= LEN=01000 REG=F OFF=0 LAB= 00 (1/12)10 WIPE BUF,C'A' 00 4100F01010(1/3)11+ LA0,BUF 04 A7180200 (1/4)12+ LHI 1,L'BUF 08 C029C10000(1/5)13+ LFI 2,C'A'*X'100' 0E 0E02 (1/6)14+ MVCL 0,2 10 (1/14)16 BUF DSCL512 000210 (1/15)17 END (It would be really swell if the Assembler List knew about a fixed-width font for such examples.)
Re: Complex immediate fields
I did not realize that one of your objections was having to code x'40' when what you meant was c' '. >From the feedback I got, LFI R15,C' '*ShiftLeft24 should work but LFI >R15,C'A'*ShiftLeft24 will not due to overflow. What about SETC BYTE(0) LFI C' ' I am not a proficient macro language hacker. Will the above compile? If not, will something like that? Charles -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Seymour J Metz Sent: Friday, March 29, 2024 2:36 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Complex immediate fields I'll have to try that once I get my userid back. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר From: IBM Mainframe Assembler List on behalf of Charles Mills Sent: Friday, March 29, 2024 3:26 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Complex immediate fields What about (untested) ShiftLeft24 EQU x'100' LFI R15,X'40'*ShiftLeft24 Charles -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Seymour J Metz Sent: Friday, March 29, 2024 9:57 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Complex immediate fields Back in he Assembler XF era I would code something like LAR0,L'DEST LAR1,DEST XRR15,R15 ICM R15,8,=C' ' MVCL R0,R14 On current hardware there is an IILF (LFI) instruction, and I would like to use it instead of the XR/ICM sequence. I consider LFI R15,X'4000' to be ugly, and would like to be able to either use an immediate field combing CL1 and XL3 pieces or to refer to an EQU defining that combination. Is there any way to do that in HLASM? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
Re: Complex immediate fields
I'll have to try that once I get my userid back. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר From: IBM Mainframe Assembler List on behalf of Charles Mills Sent: Friday, March 29, 2024 3:26 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Complex immediate fields What about (untested) ShiftLeft24 EQU x'100' LFI R15,X'40'*ShiftLeft24 Charles -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Seymour J Metz Sent: Friday, March 29, 2024 9:57 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Complex immediate fields Back in he Assembler XF era I would code something like LAR0,L'DEST LAR1,DEST XRR15,R15 ICM R15,8,=C' ' MVCL R0,R14 On current hardware there is an IILF (LFI) instruction, and I would like to use it instead of the XR/ICM sequence. I consider LFI R15,X'4000' to be ugly, and would like to be able to either use an immediate field combing CL1 and XL3 pieces or to refer to an EQU defining that combination. Is there any way to do that in HLASM? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
Re: Complex immediate fields
Good catch. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר From: IBM Mainframe Assembler List on behalf of Dan Greiner Sent: Friday, March 29, 2024 1:09 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Complex immediate fields Seymour, You usage of the even/odd R0/R1 pair appears to be reversed (unless you intended to zero some memory at whatever location L'DEST resolves to ... not to worry, it happens to dyslexic programmers like me all the time). I don't know of any means by which you can split the definition of an immediate field such as you suggest, and I'm not sure I'd welcome that sort of complexity for what is otherwise a relatively simple concept: immediacy.
Re: Complex immediate fields
Back in the day the PDP-6 looked coll. MAP in IBSYS/IBJOB also had a feature that I would love to see in HLASM: the QUAL pseudo-op. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר From: IBM Mainframe Assembler List on behalf of Paul Gilmartin <0014e0e4a59b-dmarc-requ...@listserv.uga.edu> Sent: Friday, March 29, 2024 1:15 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Complex immediate fields On 3/29/24 10:56:49, Seymour J Metz wrote: > Ba... I consider > > LFI R15,X'4000' > > to be ugly, and would like to be able to either use an immediate field > combing CL1 and XL3 pieces or to refer to an EQU defining that combination. > Is there any way to do that in HLASM? > Is LOCTR any help? (You would have loved the PDP-6 immediate facility. An immediate value could be any sequence of instructions and constants.) -- gil
Re: Complex immediate fields
That still uses hex notation for character data, which is what I'm trying to avoid. -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר From: IBM Mainframe Assembler List on behalf of Tom Harper <16c16a7381bc-dmarc-requ...@listserv.uga.edu> Sent: Friday, March 29, 2024 1:12 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Complex immediate fields Seymour, How about this: LLILH R15,X’4000’ Tom Harper Phoenix Software International Sent from my iPhone > On Mar 29, 2024, at 12:56 PM, Seymour J Metz wrote: > > Back in he Assembler XF era I would code something like > > LAR0,L'DEST > LAR1,DEST > XRR15,R15 > ICM R15,8,=C' ' > MVCL R0,R14 > > On current hardware there is an IILF (LFI) instruction, and I would like to > use it instead of the XR/ICM sequence. I consider > > LFI R15,X'4000' > > to be ugly, and would like to be able to either use an immediate field > combing CL1 and XL3 pieces or to refer to an EQU defining that combination. > Is there any way to do that in HLASM? > > > > -- > Shmuel (Seymour J.) Metz > http://mason.gmu.edu/~smetz3 > עַם יִשְׂרָאֵל חַי > נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר This e-mail message, including any attachments, appended messages and the information contained therein, is for the sole use of the intended recipient(s). If you are not an intended recipient or have otherwise received this email message in error, any use, dissemination, distribution, review, storage or copying of this e-mail message and the information contained therein is strictly prohibited. If you are not an intended recipient, please contact the sender by reply e-mail and destroy all copies of this email message and do not otherwise utilize or retain this email message or any or all of the information contained therein. Although this email message and any attachments or appended messages are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by the sender for any loss or damage arising in any way from its opening or use.
Re: Complex immediate fields
That fails with an arithmetic overflow if the byte value has the high order bit set. Robert Ngan DXC Luxoft -Original Message- From: IBM Mainframe Assembler List On Behalf Of Charles Mills Sent: Friday, March 29, 2024 14:27 To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Complex immediate fields What about (untested) ShiftLeft24 EQU x'100' LFI R15,X'40'*ShiftLeft24 Charles -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Seymour J Metz Sent: Friday, March 29, 2024 9:57 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Complex immediate fields Back in he Assembler XF era I would code something like LAR0,L'DEST LAR1,DEST XRR15,R15 ICM R15,8,=C' ' MVCL R0,R14 On current hardware there is an IILF (LFI) instruction, and I would like to use it instead of the XR/ICM sequence. I consider LFI R15,X'4000' to be ugly, and would like to be able to either use an immediate field combing CL1 and XL3 pieces or to refer to an EQU defining that combination. Is there any way to do that in HLASM? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
Re: Complex immediate fields
What about (untested) ShiftLeft24 EQU x'100' LFI R15,X'40'*ShiftLeft24 Charles -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Seymour J Metz Sent: Friday, March 29, 2024 9:57 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Complex immediate fields Back in he Assembler XF era I would code something like LAR0,L'DEST LAR1,DEST XRR15,R15 ICM R15,8,=C' ' MVCL R0,R14 On current hardware there is an IILF (LFI) instruction, and I would like to use it instead of the XR/ICM sequence. I consider LFI R15,X'4000' to be ugly, and would like to be able to either use an immediate field combing CL1 and XL3 pieces or to refer to an EQU defining that combination. Is there any way to do that in HLASM? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
Re: Complex immediate fields
How about if you define the immediate field by simply multiplying the fill character by 16 megs? Assuming that the destination symbol has an implicit length, you could encapsulate this into a macro with just the destination and fill character as operands: MACRO WIPE , LA0, LA1,L' LFI 2,*X'100' MVCL 0,2 MEND Seems to assemble okay.
Re: Complex immediate fields
On 3/29/24 10:56:49, Seymour J Metz wrote: Ba... I consider LFI R15,X'4000' to be ugly, and would like to be able to either use an immediate field combing CL1 and XL3 pieces or to refer to an EQU defining that combination. Is there any way to do that in HLASM? Is LOCTR any help? (You would have loved the PDP-6 immediate facility. An immediate value could be any sequence of instructions and constants.) -- gil
Re: Complex immediate fields
Seymour, How about this: LLILH R15,X’4000’ Tom Harper Phoenix Software International Sent from my iPhone > On Mar 29, 2024, at 12:56 PM, Seymour J Metz wrote: > > Back in he Assembler XF era I would code something like > > LAR0,L'DEST > LAR1,DEST > XRR15,R15 > ICM R15,8,=C' ' > MVCL R0,R14 > > On current hardware there is an IILF (LFI) instruction, and I would like to > use it instead of the XR/ICM sequence. I consider > > LFI R15,X'4000' > > to be ugly, and would like to be able to either use an immediate field > combing CL1 and XL3 pieces or to refer to an EQU defining that combination. > Is there any way to do that in HLASM? > > > > -- > Shmuel (Seymour J.) Metz > http://mason.gmu.edu/~smetz3 > עַם יִשְׂרָאֵל חַי > נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר This e-mail message, including any attachments, appended messages and the information contained therein, is for the sole use of the intended recipient(s). If you are not an intended recipient or have otherwise received this email message in error, any use, dissemination, distribution, review, storage or copying of this e-mail message and the information contained therein is strictly prohibited. If you are not an intended recipient, please contact the sender by reply e-mail and destroy all copies of this email message and do not otherwise utilize or retain this email message or any or all of the information contained therein. Although this email message and any attachments or appended messages are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by the sender for any loss or damage arising in any way from its opening or use.
Re: Complex immediate fields
Seymour, You usage of the even/odd R0/R1 pair appears to be reversed (unless you intended to zero some memory at whatever location L'DEST resolves to ... not to worry, it happens to dyslexic programmers like me all the time). I don't know of any means by which you can split the definition of an immediate field such as you suggest, and I'm not sure I'd welcome that sort of complexity for what is otherwise a relatively simple concept: immediacy.
Complex immediate fields
Back in he Assembler XF era I would code something like LAR0,L'DEST LAR1,DEST XRR15,R15 ICM R15,8,=C' ' MVCL R0,R14 On current hardware there is an IILF (LFI) instruction, and I would like to use it instead of the XR/ICM sequence. I consider LFI R15,X'4000' to be ugly, and would like to be able to either use an immediate field combing CL1 and XL3 pieces or to refer to an EQU defining that combination. Is there any way to do that in HLASM? -- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 עַם יִשְׂרָאֵל חַי נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר