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
