Mike Shaw wrote

<snip>

This _gold_ for ISVs writing code that must execute on many different z

models.

</snip>

Thanks to Dan and Yves for all the work.
For Dan's, I'd suggest (somehow) adding a "key" to the 2-character facility 
names (I know most of them, but many might not, so it could be helpful to have 
the "long name"). I couldn't see "which facility" in Yves' table (and I think 
that's really important because even if it's on a machine that doesn't mean you 
can use it on a given OS or even a given environment for a given OS)

I'm curious in exactly what way this information on a machine basis is a lot of 
help. I certainly agree that it's nice to know what instructions you are "free 
to use". And for that, having the information by facility is (to me) most 
helpful.

With or without the opcode table, you still likely need to pay attention to 
architecture level set (which is not by machine, but rather by facility).
For z/OS, that is documented here: 
https://www.ibm.com/docs/en/zos/3.1.0?topic=system-identifying-server-requirements
within Table 1. Minimum server levels and machine facilities that are required 
for z/OS

Most cases I would think would choose to limit their instructions to those 
available in facilities known (by architecture level set) to be available on 
all the releases you are choosing to support. And something done "if available" 
would be checking the facility bit at run-time. Is anyone really looking at 
"machine model" to determine availability of an instruction? That would not 
ordinarily be a good idea.

If I were creating this for z/OS, I'd like a table of "show me all the 
instructions I know that I can use for each z/OS release" (with an indicator, 
perhaps, of which were added since the previous release). That gives you the 
direct way to see what you can rely upon being available, for whichever you 
choose as your oldest release. Maybe that's just me.

Peter Relson
z/OS Core Technology Design

Reply via email to