Having worked with S/360-based architecture for longer than I care to admit, I 
never fully appreciated two architectural peculiarities of the BXH and BXLE 
instructions:
1. The "normal" usage is to have the 3rd operand designate an even-numbered 
register, such that the increment is in the even-numbered register, and the 
compare value is in the odd-numbered (R3+1) register. However, the instruction 
allows the 3rd operand to designate an odd-numbered register, in which case the 
increment and compare value are the same. 
2. The 1st- and 3rd-operand registers can be designated as the same register, 
in which case the comparison is performed before the 1st-operand register is 
updated.

Is there any legitimate case where a program would ever specify the 3rd operand 
as an odd-numbered register? Or, even weirder, is there any legitimate case 
where a program would designate the same register for the 1st and 3rd operans?? 
 I can't think of any, and I'm rather surprised that IBM didn't originally 
recognize a specification exception for this. I guess it's simply a case of 
caveat programmator.

Reply via email to