Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)
On 2017-05-12, at 16:53, Keven Hall wrote: > Regarding code like: >>BZNOERROR (If RC==0.) >>DCX'00',C'You shouldn'ta done that.' > > I'd suggest documenting the error in source code rather than the instruction > cache (or using a 1-byte numeric error code. > Good point. So bunch them under a LOCTR far away and unlikely to contend with cache. 1-byte error codes and reporting errors by program check are a relic of antiquated storage constraints. Even decades ago, I remember a system from another vendor which had no error codes. Explanations appeared in the diagnostic manual arranged by message texts in alphabetical order. I suppose that paid too little attention to national languages. Nowadays for systems lacking message codes, GIYF. -- gil
Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)
Regarding code like: > BZNOERROR (If RC==0.) > DCX'00',C'You shouldn'ta done that.' I'd suggest documenting the error in source code rather than the instruction cache (or using a 1-byte numeric error code. Possibly I'm being pedantic. For sure I'm dragging this thread ever further from its original subject. Keven > On May 12, 2017, at 11:57, Paul Gilmartin > <0014e0e4a59b-dmarc-requ...@listserv.uga.edu> wrote: > >> On 2017-05-12, at 09:56, somitcw wrote: >> >> My favourite was to branch to an odd address. >> >> S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine. >> If an operator called at 2:00AM, I would know who caused 3 pair of socks. >> > Unfortunately, IIRC the exception occurs after the branch is taken > so the PSW provides no ready indication of the point of error. > >> Coding so that the assembler didn't flag it was needed but easy. >> Something like: >> >> BNE ERRLABEL-CSECT-1(BASEREG) >> > I suppose that could be doctored so the PSW points near > either the point at which the error was detected or to > an error message. > > I think of: > BZNOERROR (If RC==0.) > DCX'00',C'You shouldn'ta done that.' > NOERROR DS0X > > -- gil
Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)
The BEA tells where you came from. It means (going back to an earlier comment) you don't need to branch around x'00'. You can freely branch to it. It is so useful I wish it was part of the symptom dump. ...chris. -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Paul Gilmartin Sent: May-12-17 9:57 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction) On 2017-05-12, at 09:56, somitcw wrote: > My favourite was to branch to an odd address. > > S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine. > If an operator called at 2:00AM, I would know who caused 3 pair of socks. > Unfortunately, IIRC the exception occurs after the branch is taken so the PSW provides no ready indication of the point of error. > Coding so that the assembler didn't flag it was needed but easy. > Something like: > > BNE ERRLABEL-CSECT-1(BASEREG) > I suppose that could be doctored so the PSW points near either the point at which the error was detected or to an error message. I think of: BZNOERROR (If RC==0.) DCX'00',C'You shouldn'ta done that.' NOERROR DS0X -- gil
Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)
On 2017-05-12, at 09:56, somitcw wrote: > My favourite was to branch to an odd address. > > S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine. > If an operator called at 2:00AM, I would know who caused 3 pair of socks. > Unfortunately, IIRC the exception occurs after the branch is taken so the PSW provides no ready indication of the point of error. > Coding so that the assembler didn't flag it was needed but easy. > Something like: > > BNE ERRLABEL-CSECT-1(BASEREG) > I suppose that could be doctored so the PSW points near either the point at which the error was detected or to an error message. I think of: BZNOERROR (If RC==0.) DCX'00',C'You shouldn'ta done that.' NOERROR DS0X -- gil
Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)
My favourite was to branch to an odd address. S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine. If an operator called at 2:00AM, I would know who caused 3 pair of socks. Coding so that the assembler didn't flag it was needed but easy. Something like: BNE ERRLABEL-CSECT-1(BASEREG)
Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)
An advantage of "DC X'00xx'" is it shows up in the "data at the PSW" in the abend summary. Use a combination of both: DC X'00xx' DC C'This is why the moon is blue.' Bill Hitefield Dino-Software Corporation 800.480.DINO 423.878.5660 www.dino-software.com -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of John McKown Sent: Thursday, May 11, 2017 2:43 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction) On Thu, May 11, 2017 at 1:34 PM, Gibney, Davewrote: > In days of limited storage, sure. But, today, why not DC X'' > DC C'I blew up here because the moon is blue' > > Looks nice. I'd probably do DC H'0',C'FIXME: YOU DID SOMETHING WEIRD AND I''M CONFUSED.' -- Advertising is a valuable economic factor because it is the cheapest way of selling goods, particularly if the goods are worthless. -- Sinclair Lewis Maranatha! <>< John McKown
Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)
>>> I've never seen one, that I can remember, occur when executing data Way back when, I discovered this code in an IGZ (COBOL module) BALR 14,15 DC CL6'PATCH' etc. According to IBM a return wasn't possible (it did), the DC is a nasty XC This was done inside CICS and did sufficent damage to cause the CICS region to crash I raised an APAR Melvyn Maltz. - Original Message - From: "Steve Thompson"To: Sent: Friday, May 12, 2017 3:07 AM Subject: Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction) > Has anyone ever seen S0C3 (PIC 3) as an accident? > > I use EX 0,* to trigger a failure. I've never seen one, that I > can remember, occur when executing data (such as happens when one > takes a wild branch). > > Just thought I'd ask while you all are kind of on the subject. > > Regards, > Steve.T
Re: Performance of Decimal Floating Point Instruction
I wrote my own trace after seeing TRACE390, and not liking the way it did things. My code is re-entrant, up to date with most new instructions, caters for 64-bit, etc. Was originally published in the MVS Update in the 90's, but much modified since then. Obviously, with the release of the HLASM Toolkit's IDF, the something like TRACE390 is not really as helpful as it was 20 years ago. -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Farley, Peter x23353 Sent: 11 May 2017 21:32 To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Performance of Decimal Floating Point Instruction Excellent idea! Could be a superb mechanism for setting up instruction-tracing or debugging software (see program TRACE390 in CBT file 391, for example) without the overhead of ESTAE or the (currently unsupported under z/OS) TRAP exits. But perhaps not directly from any general register (think extreme EREG that reloads ALL registers from the last stack entry, including the one you used to execute the EREG, or LMG 0,15,...). Perhaps a dedicated (set of?) "instruction register(s)"? That would be cool. Would need at least RR type instructions to load them from GR's. Just dreaming . . . Peter -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of John McKown Sent: Thursday, May 11, 2017 2:39 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Performance of Decimal Floating Point Instruction On Thu, May 11, 2017 at 1:28 PM, Charles Millswrote: > Absent EX how do you do a variable length PACK or MVO or ... > I said that I didn't _like_ EX. Not that I didn't _use_ it. I'd prefer to "synthesize" an instruction into a 64 bit GPR and then "EX" the contents of the GPR. That would allow me to do more than just modify the value in second byte of the instruction. I understand why EX exists (just as you have pointed out) and why it does what it does. But a more generalized facility would be, to me, "nicer". But, in reality (which stinks in some ways), I understand that IBM won't create a new instruction "because John thinks it would be nice". [grin] > Surely not with an MVI into the instruction stream ... > > Charles > > -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus
Re: Performance of Decimal Floating Point Instruction
Agreed -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Farley, Peter x23353 Sent: 11 May 2017 20:23 To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Performance of Decimal Floating Point Instruction PMFJI, but really, even for non-LE subroutines how hard is it to save your registers in your own R13 area, write an inline WTO with message indicating where and why you want to blow up and an ABEND macro right after? Yes, the WTO is non-reentrant. Making it reentrant is not that hard. IMHO an ABEND macro with a unique abend code is far preferable to any of the discussed techniques except during actual development unit testing (before any client/user ever sees it), but maybe that's just me. Peter -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of John McKown Sent: Thursday, May 11, 2017 1:52 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: Performance of Decimal Floating Point Instruction On Thu, May 11, 2017 at 12:32 PM, Charles Millswrote: > And one of these days the architecture starts allowing EX of an EX and > it fails the bite test. > > Charles > -- This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system. --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus