One of the more clever uses of EX that I've seen was in the Model204 database 
system. Originally written in the 1960s, it was  EXTREMELY frugal in its memory 
use.  It used common call-manager code to call and return from functions which 
would save/restore the only the registers that were modified by the called 
function. 
 
The registers used by a function were contained as constants in the function's 
header text. Using this information, the original call manager dynamically 
altered the register range in STM/LM instructions to effect saving/restoring 
only the registers needed.  In the S/360, the performance of such 
self-modifying code was of little consequence.  However, when S/370s introduced 
split instruction and data caches, the performance of frequent self-modifying 
code became abysmal.

The solution was to use EX to modify the register range in the STM/LM 
instructions, and performance was then acceptable.

Reply via email to