Not well thought out, or at least not precisely expressed.

Consider the following code:
      LA    R0,0     put "low core" constant address of zero in R0
      L       R1,16(R0,R0)  get the address of the CVT
* at this point, a program interrupt occurs.

Or perhaps the code can get into supervisor state first so that it can alter 
the proper bit in Control Register 0 before attempting to fetch the address of 
the CVT.

Neither way looks very useful.

Maybe I am missing something.

Bill Fairchild

-----Original Message-----
From: IBM Mainframe Assembler List [mailto:[email protected]] On 
Behalf Of McKown, John
Sent: Tuesday, December 27, 2011 4:09 PM
To: [email protected]
Subject: Idea for a possible enhancement to z architecture

I've been coding up a UNIX program in HLASM. One thing that I'm doing is "chain 
chasing" using pointers. The end of chain is indicated by a pointer of binary 
zeros: A(0). The code basically loops by doing an LT instruction of the next 
pointer, followed by a JNZ. Works quite well. Now my mind is churning a bit. I 
seen this type of thing in a lot of C code as well. But it depends on the 
programmer remembering to check the next pointer for NULL. So what occurred to 
me was: "Why doesn't the hardware do this?". That spawned an idea that I would 
like your feedback on. What do you think of a hardware feature, selectable via 
a bit in a control register, so that addresses in "low core" can only be 
referenced via GPR0? When using GPR0 as either a base or index register, the 
actual contents are actually and F'0' is used as the value. I don't know of any 
exception to this rule. So why not extend it? I.e. if you use any register as a 
base register in an instruction, and that register con!
 tains F'0' (or D'0' in AMODE 64) or x'80000000', then a program interrupt 
occurs. Granted, this could cause a "false positive" for those people who 
reverse the meaning of the "base" and "index" registers. This could cause a 
"false positive". Which is why it should be governed by a bit in a control 
register. Perhaps with some way in the binder to indicate that the "interrupt 
if base register contents are NULL" switch should be ON for a particular 
module. I wonder if this would help with program bugs. It would definately stop 
the branch to location 0 when a VCON is unsatisfied. And the interrupt would be 
on the branch instruction instead of being in low memory.

Good idea? Or stupid?

John McKown
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone *
[email protected] * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or 
proprietary information. If you are not the intended recipient, please contact 
the sender by reply e-mail and destroy all copies of the original message. 
HealthMarkets(r) is the brand name for products underwritten and issued by the 
insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance 
Company(r), Mid-West National Life Insurance Company of TennesseeSM and The 
MEGA Life and Health Insurance Company.SM

Reply via email to