A method and apparatus for runtime remediation of object-code instructions
(such as date instructions that are not year 2000 compliant) in a computer
program. Before runtime, a setup function of a program monitor locates
each instruction to be remediated in a load module of a user program and
overlays the instruction with a trap instruction. The address of the
overlaid instruction is stored in a scan slot of a window control table
(WCT). The text of the overlaid instruction is stored in a corresponding
operand slot of the WCT along with control information including a set of
flags and windowing and cycling parameters. At runtime, upon decoding a
trap instruction, the CPU transfers control to an instruction simulation
function of the program monitor, which searches the scan slots of the WCT
for the one containing the address of the overlaid instruction. Upon
finding the scan slot, the instruction simulation function performs an
instruction simulation operation in accordance with the control
information in the corresponding operand slot, then returns control to the
user program. If an execute flag is not set, the instruction simulation
function invokes a specified user routine without executing the overlaid
instruction. If the execute flag is set, the instruction simulation
function executes the overlaid instruction in a mode of operation
determined by the remaining flags. In a windowing mode, one or both
instruction operands are compared with a specified delimiter, and the
instruction is executed as though a specified increment were added to the
operand before performing the operation of the instruction if the operand
is less than the delimiter. In a cycling mode, a specified increment is
added to the result the instruction would otherwise produce if that result
is less than zero.
Um método e um instrumento para a remediação runtime de instruções do objeto-código (tais como as instruções da data que não são o ano 2000 compliant) em um programa de computador. Antes do runtime, uma função da instalação de um monitor do programa encontra cada instrução para ser remediated em um módulo de carga de um programa de usuário e cobre a instrução com uma instrução da armadilha. O endereço da instrução do overlaid é armazenado em um entalhe da varredura de uma tabela do controle da janela (WCT). O texto da instrução do overlaid é armazenado em um entalhe correspondente do operando do WCT junto com a informação de controle including um jogo das bandeiras e de parâmetros do windowing e dar um ciclo. No runtime, em cima de descodificar uma instrução da armadilha, o processador central transfere o controle a uma função da simulação da instrução do monitor do programa, que procurara os entalhes da varredura do WCT por esse que contem o endereço da instrução do overlaid. Em cima de encontrar o entalhe da varredura, a função da simulação da instrução executa uma operação da simulação da instrução de acordo com a informação de controle no entalhe correspondente do operando, a seguir retorna o controle ao programa de usuário. Se uma bandeira executar não for ajustada, a função da simulação da instrução invoca uma rotina de usuário especificada sem executar a instrução do overlaid. Se a bandeira executar for ajustada, a função da simulação da instrução executa a instrução do overlaid em uma modalidade de operação determinada pelas bandeiras restantes. Em uma modalidade do windowing, um ou ambo o operando da instrução é comparado com um delimitador especificado, e a instrução é executada como se um incremento especificado foi adicionado ao operando antes de executar a operação da instrução se o operando for menos do que o delimitador. Em uma modalidade dando um ciclo, um incremento especificado é adicionado ao resultado que a instrução produziria de outra maneira se esse resultado fosse menos de zero.