On Tue, 19 Oct 2010 20:53:30 +0000, john gilmore wrote:

>Robert Raicer wrote:
>
><begin snippet>
>When I first read about the Long Displacement Facility in
>Principles of Operation I was surprised that IBM did such
>a truly stupid thing with respect to assigning meaning to
>bits documented as "unassigned" in previously existing
>general (unprivileged) instructions. I suppose the real
>flaw was in the weak implementation in prior machines with
>respect to enforcing that unassigned bits in instructions
>were zero. IBM does have legitimate wiggle room here with
>respect to what is documented in Principles of Operation
>(but I still think what they did was stupid).
></end snippet>
>
>This passage puzzles me.  I should prefer the word reserved,
>which is in fact used in some IBM documentatioin, to the word
>unassigned; but what is the issue here?

Consider, for example, the AGF instruction.  In the first and
second editions of the POO, it was a format RXE instruction,
with bits 23-39 unassigned:

AGF      R1,D2(X2,B2)     [RXE]

   ________ ____ ____ ____ _/__ ________ ________
  |  'E3'  | R1 | X2 | B2 | D2 |////////|  '18'  |
  |________|____|____|____|_/__|________|________|
  0         8   12   16   20   32       40      47

Then, with the addition of the Long-Displacement facility, the
instruction was changed to be format RXY and bits 23-39 are
the high bits of the displacement:

AGF      R1,D2(X2,B2)     [RXY]

   ________ ____ ____ ____ _/__ ________ ________
  |  'E3'  | R1 | X2 | B2 |DL2 |  DH2   |  '18'  |
  |________|____|____|____|_/__|________|________|
  0         8   12   16   20   32       40      47

The mnemonic and the opcode are the same.  When executed on
older hardware, without the long-displacement facility, there
is not a specification exception if bits 32-39 are non-zero.

>Did Mr. Raicer or someone he works with set and use some of
>these bits?  If so, how and why?

If he did, it was simply by assembling the AGF instruction
with a base register such that the long displacement was
needed.  The problem described in the Flash that Mr. Racier
posted had to do with unpredictable results caused by running
DB2 version 8 on hardware that does not have the
long-displacement facility.

>Perhaps even more puzzling is the notion of "enforcing that
>unassigned bits in instructions [be] zero".

No specification exception occurs.

>The assembler sets these bits to zero in such instructions;
>one must use instruction punning to set them otherwise.

Not in the 69 instructions in question that were altered by
the Long-Displacement facility.  They were changed from formats
RSE and RXE to formats RSY and RXY.

>Or again, there may be other issues here that I have missed.
>If so, I should be grateful to know what they are.

There are.  I hope this helps.

--
Tom Marchant

Reply via email to