Gary, I discontinued the use of -
label DS 0H in lieu of - label DC 0H'0' long ago. As best as I can recall, there was a bug identified (subsequently corrected (?)) where the buffer into which code was assembled was not always initialized to zeroes, and it was possible to have memory locations skipped over by virtue of alignment issues contain random data. The use of " DC " in lieu of " DS " ensures that memory locations skipped over by virtue of alignment are initialized to zeroes. John P. Baker -----Original Message----- From: IBM Mainframe Assembler List <ASSEMBLER-LIST@LISTSERV.UGA.EDU> On Behalf Of Gary Weinhold Sent: Wednesday, August 1, 2018 2:40 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: EQU * considered harmful To avoid the problem Dan illustrates but retain the advantages Charles cites of not labeling specific instructions, we use label DS 0H instead of label EQU * But i think some of the point of the original post was lost, since the question was whether label EQU * was ever beneficial, where the "*" indicates current location rather than meaning generically any value. On 2018-08-01 2:23 PM, Dan Greiner wrote: > I too disagree (rather strongly). > > As an example, consider where EQU is used to give names to bits of a field in > memory. > > FLAGS DS X > F_OPEN EQU X'80' > F_CLOSE EQU X'40' > F_FUBAR EQU X'20' > ... > TM FLAGS,F_FUBAR > JO TOTALLY_HOSED > > Furthermore, you can assign a "length" to each bit, and use that as an offset > in the field, e.g: > > FLAGS DS XL4 > F_OPEN EQU X'80',0 > F_CLOSE EQU X'40',0 > F_FUBAR EQU X'02',3 > ... > TM FLAGS+L'F_FUBAR,F_FUBAR > > (apologies if the syntax is not precise ... I'm doing this from memory at > home). > > As to Charles' comment about using EQU as a branch target, I'm a little bit > less comfortable. If — by chance or accident — there happens to be code > before the EQU that knocks the location off a halfword boundary, this could > spell trouble. E.g: > > LA 7,ITS_ON > TM BYTE,BIT > BCR X'01',7 > ... > other instructions > HI_MOM DC C'Hello' > ITS_ON EQU * > > Since the constant "Hello" is 5 bytes long, this knocks the label ITS_ON onto > an odd boundary. If the branch had been directly to the location (as opposed > to BCR), HLASM would have flagged an error. But in this case, the error may > go undetected until execution — at which point the hardware will slap you > with a PIC-0006 (PIC-0006). Gary Weinhold Senior Application Architect DATAKINETICS | Data Performance & Optimization Phone +1.613.523.5500 x216 Email: weinh...@dkl.com Visit us online at www.DKL.com E-mail Notification: The information contained in this email and any attachments is confidential and may be subject to copyright or other intellectual property protection. If you are not the intended recipient, you are not authorized to use or disclose this information, and we request that you notify us by reply mail or telephone and delete the original message from your mail system.