PT100206B - Metodo para operar um computador digital e sistema de computador digital - Google Patents

Metodo para operar um computador digital e sistema de computador digital Download PDF

Info

Publication number
PT100206B
PT100206B PT100206A PT10020692A PT100206B PT 100206 B PT100206 B PT 100206B PT 100206 A PT100206 A PT 100206A PT 10020692 A PT10020692 A PT 10020692A PT 100206 B PT100206 B PT 100206B
Authority
PT
Portugal
Prior art keywords
computer program
instructions
address
instruction
program
Prior art date
Application number
PT100206A
Other languages
English (en)
Other versions
PT100206A (pt
Inventor
Scott G Robinson
Richard L Sites
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US07/666,025 external-priority patent/US5307504A/en
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of PT100206A publication Critical patent/PT100206A/pt
Publication of PT100206B publication Critical patent/PT100206B/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Devices For Executing Special Programs (AREA)
  • Developing Agents For Electrophotography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Retry When Errors Occur (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Hardware Redundancy (AREA)
  • Error Detection And Correction (AREA)
  • Chemical Or Physical Treatment Of Fibers (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Eye Examination Apparatus (AREA)
  • Advance Control (AREA)

Description

invento refere-se ainda a um sistema de computador digital.
) . θ' V ’ - --- X <\s
Ο presente pedido é uma continuação em parte de SISTEMA E MÉTODO MELHORADO PARA PRESERVAR A GRANULARIDADE DE INSTRUÇÃO PARA CÓDIGO DE PROGRAMA TRADUZIDO, de Scott G. Robinson e Richard L. Sites, N2 Série dos E.U.A. 07/660,625, requerida em 7 de Março de 1991.
REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS - Faz-se referencia ao seguinte pedido de patente, a qual é aqui incorporada por referência:
NÚMERO DE SÉRIE 07/666,071 requerida em 7 de Março de 1991 com o titulo SISTEMA E MÉTODO PARA PRESERVAR A ATOMICIDADE DE ESTADO DE INSTRUÇÃO PARA CÓDIGO DE PROGRAMA TRADUZIDO por Scott G. Robinson, Richard Sites e Richard Witek.
Também é feita referência aos seguintes pedidos de
patentes cedidas ao presente cessionário e relacionadas com a
tradução de código:
NÚMERO DE SÉRIE 07/666,070 requerida em 7 de Março de
1991 com O titulo RESOLUÇÃO DE RAMIFICAÇÃO VIA EXECUÇÃO SIMBÓLICA PARA TRAS por RICHARD L. Sites.
NÚMERO DE SÉRIE 07/666,216, requerida em 7 de Março de 1991, com o titulo LOCALIZAÇÃO DO CÓDIGO DE PROGRAMA POR EXECUÇÃO SUCESSIVA DE CÓDIGO E INTERPRETAÇÃO, por Richard L. Sites.
NÚMERO DE SÉRIE 07/666,210 requerida em 7 de Março de 1991, com o titulo UTILIZAÇÃO DE PROFUNDIDADE DE PILHA PARA IDENTIFICAR ERROS DE CÓDIGO MAQUINA, por Richard L. Sites.
NÚMERO DE SÉRIE 07/662,223 requerida ' em 7 de Março de 1991, com O titulo de IMAGEM CRUZADA DE REFERÊNCIA DE CÓDIGO DE PROGRAMA por Richard L. Sites.
NÚMERO DE SÉRIE 07/666,083, requerida em 7 de Março de 1991, com o titulo de USO DE PROFUNDIDADE DE PILHA PARA IDENTIFICAR ARQUITECTURA E CHAMADAS DE DEPENDÊNCIA PADRÃO EM CÓDIGO MÁQUINA por Thomas R. Benson.
NÚMERO DE SÉRIE 07/666,084 requerida em 7 de Março de 1991, com O titulo de USO DE DETECÇÃO DE REGISTOS PARA APOIAR CÓDIGO DE 32 BITS COMPILADO EM AMBIENTE DE 64 BITS, por Thomas R. Benson.
NÚMERO DE SÉRIE 07/666,085 requerida em 7 de Março de 1991, com o titulo FUNCIONALIZAÇÃO DA LISTA DE ARGUMENTOS DE REFERENCIA DE LINGUAGEM DE ASSEMBLAGEM AO TRADUZIR CÓDIGO PARA MÁQUINAS DE DIFERENTES ARQUITECTURAS, por Thomas R. Benson.
NÚMERO DE SÉRIE 07/666,082 requerida em 7 de Março de 1991, com O titulo DETECÇÃO DE CÓDIGOS DE CONDIÇÃO AO TRADUZIR CÓDIGO PARA DIFERENTES ARQUITECTURAS DE MÁQUINA, por Thomas R. Benson.
NÚMERO DE SÉRIE 07/666,023 requerida em 7 de Março de 1991 com o titulo LIGAÇÃO DE UNIDADES DE PROGRAMAS EM ACTIVAÇÃO DE PROGRAMA por Daniel L. Murphy.
NÚMERO DE SÉRIE 07/666,196 requerida em 7 de Março de 1991, com O titulo GERAÇÃO AUTOMÁTICA DE GRÁFICO DE FLUXOS PARA ANÁLISE DE PROGRAMAS E TRADUÇÃO por Richard L. Sites.
ν
Ν' * w ’ ·
Também é feita referência aos seguintes pedidos de patentes para a presente atribuição.
NÚMERO DE SÉRIE 07/666,039, requerida em 7 de Março de 1991 com O titulo MÉTODO E SISTEMA MELHORADO PARA EXECUTAR CÓDIGOS MÚLTIPLOS NUM AMBIENTE DE ARQUITECTURA MÚLTIPLA COM ) CAPACIDADE DE CORRECÇÃO DE ERROS DE CÓDIGO por Mark A. Herdeg,
James A. Wooldridge, Scott G. Robinson, Ronald F. Brender e Michael V. Iles.
NÚMERO DE SÉRIE 077666,028, requerida em 7 de Março de 1991 com o titulo SISTEMA E MÉTODO PARA INTERFACIAR AUTOMATICAMENTE CONVENÇÕES DE CHAMADAS ENTRE DUAS UNIDADES DISSIMILARES DE PROGRAMA por Danill L. Murphy.
NÚMERO DE SÉRIE 07/665,888 requerida em 7 de Março de 1991 com o titulo de SISTEMA E MÉTODO DE SOFTWARE, MELHORADO, DE CORRECÇÃO DE ERROS ESPECIALMENTE ADAPTADO PARA CORRECÇÃO DE CÓDIGO NUM AMBIENTE DE ARQUITECTURA MÚLTIPLA por James A. Wooldridge, Ronald F. Brender e Henry N. Grieb III.
NÚMERO DE SÉRIE 07/666,022 requerida em 7 de Março de 1991, com o titulo SISTEMA DE SIMULADOR MELHORADO E MÉTODO ESPECIALMENTE ADAPTADO PARA EXECUÇÃO DE CÓDIGO E SISTEMA DE CORRECÇÃO DE ERROS NUM AMBIENTE DE ARQUITECTURA MÚLTIPLA por Mark A. Herdeg e Michael V. Iles.
NÚMERO DE SÉRIE 07/666,072, requerida em 7 de Março de 1991, com O titulo de SISTEMA E MÉTODO MELHORADO PARA DETECTAR INSTRUÇÕES DE CHAMADA DE DOMÍNIO CRUZADO E REFERENCIAS DE DADOS ESPECIALMENTE ADAPTADOS REVESTIMENTO DE CÓDIGO DE INTERFACE NUMA EXECUÇÃO MULTI-CÓDIGO E SISTEMA DE CORRECÇÃO DE ERROS NUM
X
AMBIENTE DE ARQUITECTURA
MÚLTIPLA por Mark Á. Herdeg, Scott G.
Robinson, Ronald F. Brender e Michael V. Iles.
NÚMERO DE SÉRIE 07/665,752, requerida em 7 de Março de 1991, com o titulo SISTEMA E MÉTODO MELHORADO PARA REVESTIMENTO CHAMADAS DE DOMÍNIO CRUZADO NUMA EXECUÇÃO MULTICÓDIGO E SISTEMA DE CORRECÇÃO DE ERROS NUM AMBIENTE DE ARQUITECTURA MÚLTIPLA por Ronald F. Brender e Michael V. Iles.
NÚMERO DE SÉRIE 07/665,886 requerida em 7 de Março de 1991, com o titulo PROCESSO MAIS RÁPIDO PARA DESENVOLVER NOVOS SISTEMAS DE COMPUTADOR EMPREGANDO NOVOS E MELHORES PROCEDIMENTOS PARA DESENVOLVIMENTO DE SOFTWARE E TESTES por Robert V. Landan, James E. Johnson e Michall V. Iles.
FUNDAMENTO DA INVENÇÃO
1. Campo Técnico
A presente invenção diz respeito a sistemas e métodos para adaptar códigos de programa para executar em diferentes sistemas de computador e mais particularmente para sistemas e métodos para relatar erros num programa original durante a execução de uma tradução do programa original.
2. Fundamento da Técnica
Nos primeiros anos da programação de computadores, as instruções para os programas de computador eram geradas ao nível do microcódigo. Com o desenvolvimento e crescimento da engenharia de software, combinaram-se mais tarefas em instruções únicas, complexas executáveis por computadores tendo uma arquitectura de hardware concebida para a complexidade da instrução.
aumento da complexidade das instruções levava geralmente ao aumento dos preços/benefícios de rendimento no ambiente de desenvolvimento de custos de hardware de computador e capacidades de produção. Como resultado, os códigos de instruções complexas (CISC) tornaram-se largamente aceites.
Com o aumento da complexidade de instrução, contudo, tem-se tornado mais difícil conceber hardware de sistema para velocidade de execução mais alta. Em vez disso, um conjunto de código de instrução reduzido (RISC), acoplado com arquitectura de hardware de computador correlacionado, RISC ganhou aceitação como um mecanismo para levar a preço/rendimento de sistema, melhorada significativamente.
Um sistema RISC geralmente emprega instruções básicas mais simples para dirigir as operações desejadas. Uma instrução única RISC normalmente especifica uma operação única com, quando muito um único acesso à memória. Mais ainda, um sistema RISC normalmente providencia um registo para cada instrução básica. As instruções num conjunto de instrução RISC estão assim ainda a um nível mais alto que o microcódigo.
No sistema CISC típico, uma instrução única pode especificar uma sequência complexa de operações e pode fazer muitos acessos directos à memória. Assim, as operações executadas por uma instrução CISC pode requerer várias instruções RISC.
Um sistema RISC é geralmente concebido com ”hardware” optimizador de hardware tradeoff que fornecem operações de sistema mais rápidas, melhor produtividade geral de sistema e menor custo de sistema relativamente a custos de hardware disponível e capacidades de produção.
Um obstáculo à conversão de sistemas CISC para sistemas RISC é a existência de grandes bibliotecas de software que foram desenvolvidas para sistemas CISC e que não estão geralmente disponíveis para sistemas RISC. Quando um utilizador de computador escolhe adquirir um novo sistema de computador, uma das principais preocupações é se a biblioteca de programas de aplicação do utilizador pode ser usada ou convertida para uso no novo sistema de computador, e qual seria o custo de substituir essa biblioteca. Assim, para utilizadores de sistemas de computador, é muito importante que seja fornecido um mecanismo económico e eficaz para adaptação ou migração da biblioteca de programas de aplicação de utilizador para execução no sistema de computador RISC.
Estão disponíveis várias escolhas para o utilizador para migração de programas. A recompilação ou o registo podem ser empregues, mas estas técnicas são tipicamente usadas para a migração de programas escritos numa linguagem de alto nível tal como o FORTRAN que, ou não têm dependências de máquina detalhada, ou as quais têm todas as dependências de máquina existentes removidas por modificações de programação manual.
Mais ainda, em recompilando e recodifiçando, o utilizador tipicamente arca com toda a responsabilidade para a modificação de programa e garantias de comportamento de programa.
Alternativamente, os procedimentos de interpretação podem ser usados, mas a penalidade para esta aproximação é tipicamente, a substancial reduzida produtividade de programa.
Mais em particular, os procedimentos de interpretação são programas de software que correm num computador e lêem uma cadeia de instruções sujeitas (as quais bem podem ser instruções para um diferente tipo de computador) como dados, e para cada instrução sujeita executa a operação indicada. Tais procedimentos executam tipicamente de 10 a 100 instruções máquina no computador para interpretar uma única instrução sujeita. Assim, os procedimentos de interpretação providenciam código substancialmente reduzido funcionalmente equivalentes no computador.
A mais eficaz e eficiente, migração, contudo, envolve tradução de código. Na tradução de código, cada instrução de um programa existente é traduzido numa ou mais instruções na linguagem da máquina de destino.
Concordantemente, uma tradução de programas CISC para programas RISC, ou mais geralmente uma tradução de programa na
qual o código traduzido tem um conjunto de instruções relativamente reduzido, requere múltiplas ou muitas instruções no código traduzido para cada instrução no código a ser traduzido.
Um problema resultante da tradução do código CISC para o código RISC é que quando a execução do programa traduzido aborta devido a um erro, toda a informação acerca do erro geralmente é baseada sobre o estado da máquina RISC. Os programas de correcção tipicamente associados com o código fonte CISC, de alto nível, contudo, assume que a informação acerca de um erro é baseada sobre o estado de uma máquina CISC. Um programa de correcção, por exemplo, usa a informação de correcção gerada quando o código fonte CISC é compilado em código objecto CISC. A informação de correcção tipicamente inclui informação associando nomes simbólicos (ASCII) com endereços numéricos de programa e de dados CISC.
programa de correcção usa esta informação de nome simbólico para permitir ao programador de inspeccionar os conteúdos de memória na máquina CISC em endereços especificados por nomes simbólicos seleccionados. Tipicamente a informação de correcção também inclui informação de ir na pista para trás (backtraking) associando números de linha no código fonte CISC com os correspondentes endereços numéricos no código objecto CISC. Quando ocorre um erro durante a execução do programa CISC na máquina CISC, o sistema operativo na máquina CISC lê um registo de Hardware na máquina CISC para determinar o endereço da instrução CISC que está a causar o erro. O sistema operativo passa este endereço para um programa de relato de erro que referência a informação de pistagem para relatar para o 0 programador o número da linha do código fonte CISC do qual se originou o erro.
Dado que os programas de correcçãó ' associados com a compilação de código fonte CISC estão baseados sobre endereços de código objecto CISC, as instruções CISC e, o hardware na máquina CISC, não providenciam a correcção de código fonte CISC durante a execução de um programa traduzido numa máguina RISC. A correcção de código fonte CISC durante a execução de um correspondente programa objecto em RISC, numa máquina RISC poderá ser feito por um programa de correcção referenciando informação de correcção gerada ao compilar o programa fonte CISC directamente para código objecto RISC, mas esta técnica, exigiria a recompilação do código fonte CISC.
Mais ainda, em alguns casos o código fonte CISC tem-se perdido ou sido destruído de tal forma que a recompilação não é possível.
SUMARIO DA INVENÇÃO
Brevemente, numa situação onde um primeiro programa de computador foi traduzido para obter um segundo programa de computador, a presente invenção permite que um erro ocorrendo, durante a execução do segundo programa de computador, de ser I relatado no contexto do primeiro programa de computador. Isto é feito, abortando a execução do segundo programa de computador quando o erro ocorre; determinando um primeiro endereço o qual é o endereço da instrução no segundo programa de computador que causou o erro; determinando do primeiro endereço um segundo endereço de uma instrução no primeiro programa de computador do qual a instrução no segundo programa de computador foi traduzida; e relatando que o erro ocorreu; e usando o segundo endereço para indicar que o erro está associado com a instrução no primeiro programa de computador. Preferencialmente o segundo endereço é usado para indicar que o erro está associado com a instrução no primeiro programa de computador referenciando o seguir na pista (traceback) e a informação de nome simbólico gerada quando o primeiro programa de computador é compilado do código fonte. A informação de seguir na pista é referenciada para indicar o número de linha do código fonte da qual a instrução no primeiro programa de computador foi compilada. A informação de nome simbólico é referenciada para indicar o nome simbólico associado com o erro, tal como o nome de uma rotina contendo a instrução no primeiro programa ou uma variável usada pela instrução.
Numa execução preferida, o endereço da instrução no primeiro programa é determinado a partir do endereço da instrução no segundo programa referenciando uma tabela de correlação de endereços e um mapa de fronteira de bit de instrução. A tabela de correlação de endereços inclui entradas tendo cada uma um endereço de uma instrução respectiva no primeiro programa e um endereço de uma primeira instrução num conjubto de instruções no segundo programa, tendo sido traduzido da referida respectiva instrução.
A primeira instrução num conjunto de instruções no segundo programa tendo sido traduzidas de uma respectiva instrução no primeiro programa, é referida como uma instrução de fronteira. As instruções de fronteira no segundo programa distinguem-se das outras instruções no segundo programa por guardas no mapa de fronteira de bit de instrução. A fim de encontrar um segundo endereço de uma instrução no primeiro programa correspondendo a um primeiro endereço no segundo programa, a tabela de correlação de endereços é pesguisada para o primeiro endereço para encontrar o segundo endereço directamente da tabela, ou de outra forma de encontrar o maior endereço no segundo programa, o qual é menor que o primeiro endereço. Se não for encontrado o segundo endereço directamente da tabela, o mapa de fronteira de bit de instrução é perscrutado enquanto se faz a contagem do número de instruções de fronteira entre o primeiro endereço e o referido maior endereço. 0 segundo endereço é então encontrado avançando um apontador de endereço de instrução enquanto se analisa morfologicamente este mesmo número de instruções no primeiro programa começando com a instrução no endereço na entrada da tabela que também inclui o referido maior endereço.
BREVE DESCRIÇÃO DOS DESENHOS
Outros objectos e vantagens da invenção tornar-se-ão mais aparentes depois de se ler a descrição seguinte e detalhada e sobre a referência aos desenhos no qual:
A FIGURA 1 mostra um diagrama de bloco funcional genérico indicando o modo geral no qual os programas de aplicação são (a.) criados para execução por um primeiro sistema de computador (tendo um primeiro conjunto de instruções designado de X) e (b.) traduzido para execução por um diferente sistema de computador (designado de Y) tendo um conjunto de instruções relativamente reduzido;
A FIGURA 2 mostra um diagrama de bloco funcional generalizado do programa de tradução preferido, X-Y e um sistema computador de uso geral no qual é executado o programa de tradução X-Y a fim de gerar, com a granularidade de instrução X, um código de aplicação Y executável de um código de aplicação de input X;
A FIGURA 3 mostra um fluxograma geral para o programa de tradução X-Y previamente mostrado na FIGURA 2;
A FIGURA 4 mostra um diagrama de bloco funcional do sistema de computador Y com o código de aplicação Y obtido do código X e carregado no computador Y para execução conjuntamente com um programa de controlo de granularidade de instrução (IGC) o qual supervisiona a execução do código Y para garantir a preservação da granularidade de instrução X;
AS FIGURAS 5A e 5B mostram fluxogramas representando os passos funcionais preferidos executados pelo programa IGC;
A FIGURA 6 mostra um diagrama que simboliza uma tradução de instrução de código X-Y e o relacionamento de acontecimentos assíncronos;
A FIGURA 7 é um diagrama de bloco de hardware no computador Y para responder a excepções;
A FIGURA 8 é um fluxograma das operações executadas pelo Hardware da FIGURA 7 e uma rotina para lidar com excepções do sistema operativo executada pelo computador Y;
A FIGURA 9 é um fluxograma de um procedimento executado por uma rotina de excepção no modo utilizador para o computador Y;
A FIGURA 10 é um diagrama esquemático de uma tabela de correlação de endereços a qual é gerada durante a tradução do código de aplicação X para o código de aplicação Y e é usada para obter o endereço de uma instrução de código X dado o endereço de uma instrução de código Y quando executa o método de relato de erro da presente invenção;
A FIGURA 11 é um diagrama esquemático representando a correspondência entre instruções no código de aplicação X e o código de aplicação Y e endereços X e endereços Y armazenados na tabela de correlação de endereços da FIGURA 10;
A FIGURA 12 é um diagrama esquemático de um mapa de fronteira de ”bit” de instrução o qual é gerado durante a tradução do código de aplicação X para o código de aplicação Y e é usado em levar a cabo o método preferido da presente invenção;
A FIGURA 13 é um fluxograma de um procedimento para usar a tabela de correlação de endereços X-Y da figura 10 e o mapa de fronteira
de bit” de instrução da Figura 12 em levar a cabo o método preferido da presente invenção;
A FIGURA 14 é um diagrama de bloco de informação de correcção o qual ê gerado durante a compilação de código fonte para o programa de aplicação X; e
I
A FIGURA 15 é um fluxograma de um procedimento para uso da informação de correcção da FIGURA 14 para indicar que um erro está associado com uma das instruções no código de aplicação X.
)
Enquanto a invenção é susceptivel de ter várias modificações e formas alternativas, uma execução especifica daí tem sido mostrado como forma de exemplo nos desenhos e será aqui descrito em detalhe.
Deve-se entender, contudo, que não se tenciona limitar a invenção à forma particular desvendada, mas pelo contrário, a intenção é cobrir todas as modificações equivalentes e, alternativas que caiam dentro do âmbito da invenção como é definido pelas reivindicações em apêndice.
i
DESCRIÇÃO DA EXECUÇÃO PREFERIDA
Conforme foi mostrado na FIGURA 1, um programa de
aplicação 10, escrito em código fonte, é um de um numero de
programas de aplicação contido uma biblioteca de programas do
utilizador para execução num sistema de computador X 12. A arquitectura de hardware para o sistema de computador X 12 está adaptada para operar com um conjunto de instruções X empregue em produzir uma forma executável do programa 10 ou outros programas de aplicação na biblioteca do utilizador.
Para adaptar o programa 10 para uso com um sistema de computador Y 20, é necessário que a forma executável do programa 10 seja providenciada como um código Y 22 executável empregando um conjunto de instruções Y ao qual a arquitectura de hardware do sistema de computador Y 20 está adaptada.
conjunto de instruções Y geralmente emprega menos instruções básicas do que o conjunto de instruções X emprega e, a conversão do código X para o código Y requere uma tradução de instruções de uma para muitas. 0 conjunto de instruções X pode ser um conjunto de instruções CDISC e o conjunto de instruções Y pode ser um conjunto de instruções RISC. Por exemplo, conforme foi especificamente indicado para propósitos ilustrativos na FIGURA 1, o sistema X, pode empregar a arquitectura VAX^ e o sistema Y pode empregar uma arquitectura de conjunto de instruções reduzidas chamado de arquitectura RISC na DIGITAL EQUIPMENT CORPORATION.
Ambas as arquitecturas estão incorporadas em equipamento feito pela DIGITAL EQUIPMENT CORPORATION, cessionária do presente pedido.
Conforme foi mostrado na FIGURA 1, o programa de aplicação 10 pode ser migrado para o código Y 22 executável quer num caminho indirecto 24 ou num caminho directo 26. A migração directa obtem-se com a utilização de um compilador Y 28 e um programa de ligação 30. o código resultante Y executável é designado pelo numeral de referencia 223.
Se um compilador Y 28 e um programa de ligação 30 nunca não estiverem o caminho associadas, o programa tiverem sido desenvolvidos disponíveis ou o migração directa 26, por caminho indirecto 24 pode aplicação X para o sistema investimento de programa e um ganho em produtividade de sistema.
ou se por outro lado, utilizador escolher não usar causa de desvantagens ser usado para migrar
Y para atingir tanto uma poupança de o
de de
No caminho indirecto, o programa 10 é convertido para código executável 14 para o sistema de computador X 12 por meio de um compilador X 16 e um programa de ligação 18. 0 resultado é código executável 14 o qual pode correr no sistema de computador 12. Um tradutor X-Y 32, traduz o código executável X designado pelo numeral de referência 22A. A tradução de código é atingida de forma a que o código Y executa-se de forma a atingir os resultados do código X com precisão com a granularidade de instrução mesmo se o código Y é baseado num conjunto de instruções reduzido.
Preferencialmente, um sistema de tradução de código 40 (FIGURA 2) é empregue para implementar o tradutor 32 referenciado na figura 1. 0 sistema de tradução 40 inclui um computador convencional de uso geral tendo um processador 42, um sistema de memória 44 e, vários dispositivos de input/output (não mostrados) pelos quais o código de aplicação X 43 entra como input” para a tradução.
Os resultados da tradução são gerados de acordo com a presente invenção como código Y 45 o qual é ordenado para preservar fortes garantias do código a ser traduzido e em particular para facilitar uma preservação garantida da granularidade da instrução X quando o código Y é actualmente executada. Fortes garantias CISC são exemplificadas por fortes garantias VAX^ as quais são descritas mais em pormenor na aplicação acima referenciada PD91-0063/1870-409.
sistema de memória 44 inclui, entre outras secções, uma secção convencional de armazenamento de dados 46 e uma secção 48 na qual o sistema operativo do computador é armazenado. Um elemento básico empregue na tradução de código X-Y é um programa de tradução 50 armazenado noutra secção de memória. O código X de, input, 43 é armazenado como uma lista de código X 62. Mais além, para controlar a sequênciação das instruções Y, os critérios de ordenação de instruções Y 52 são armazenados e os padrões de código de instrução X-Y são armazenados para permitir a tradução tanto dos especificadores de operação de instrução e especificadores de operandos de instrução.
Um fluxograma generalizado para o programa de tradução 50 é mostrado na sua forma na figura 3. No bloco 60, entram instruções sucessivas X, sequencialmente da lista de código X armazenada 62, para processamento através de um laço de programa 64.
No laço 64, o bloco funcional 66 gera especificadores de operandos e de operações de instrução correspondentes ãs instruções X correntemente processadas e de acordo com os códigos de padrão 54 (FIGURA 2). De seguida, como foi indicado pelo bloco funcional 68, o código resultante Y é ordenado de acordo com critérios predeterminados que facilitam a preservação da
-V
granularidade de instrução actual de código Y. X durante a /execução subsequente
Uma representação X-Y é mostrado na FIGURA 6. gráfica de uma tradução de instrução
Toda a instrução X geralmente providencia para as
tarefas elementares de obter inputs, modificar inputs,
colocar os resultados em memórias temporárias e, providenciar uma actualização de estado para localizações de memória e de registo. Quando uma instrução X é traduzida para muitas” instruções Y, os critérios de ordenação 52 (FIGURA 2) empregues para organizar as instruções Y preferencialmente são aquelas que agrupam e ordenam as instruções Y no código Y para a correntemente, traduzida, instrução X (granulo) conforme se segue:
1. Um primeiro grupo de instruções G2 no código Y são aquelas que operam sobre ”inputs” armazenam esses inputs” em armazenamento temporário.
2. Um segundo grupo G2 de instruções no código Y são aquelas que operam em inputs” geram resultados modificados e, armazenam esses resultados em memórias temporárias.
3. Um terceiro grupo, G3 de instruções no código Y, são aquelas que actualizam estados X (de memória ou de registo) e estão sujeitas a possíveis excepções (como é aqui definido mais à frente).
4. Um quarto e último grupo de instruções G4, no código Y são aquelas que actualizam estados X (de memória e de registo) e estão livres de possíveis excepções.
estado X inclui estado de memória X e estado de registo X. O estado de memória X, representado pelo carácter de referência 96 na FIGURA 4 e o estado de registo representados pelo carácter de referência 97 referem-se respectivamente para a estrutura na máquina Y dedicado a ser localização de armazenamento de código de X, definido.
Os estados de memória e de registo de X podem também ser referidos como estados de memória e estados de registo que são visíveis para a arquitectura X.
Como resultado de implementar os critérios de organização preferidos da instrução Y na tradução X-Y, de código, a preservação da granularidade de instrução X é facilitada pelas seguintes razões:
1. Se ocorrer um acontecimento assíncrono durante a execução do código Y em qualquer altura durante a execução dos dois primeiros grupos G1 e G2 de instruções Y como é mostrado por uma seta 71 no diagrama da FIGURA 6, a granularidade da instrução X é mantida permitindo o processamento de acontecimentos assíncronos e segurando o contador de instruções Y PC para a próxima instrução Y de segurança (Y. na FIGURA 6) a qual é uma fronteira granular de uma instrução X.
Ao abortar a execução da sequência de código Y, corrente, para nova tentativa, é evitada a possível quebra da granularidade de instrução X porque é evitada uma possível falha de estado de acesso em qualquer instrução de grupo G3 na sequência de código Y corrente. Contudo, como resultado da organização do código Y, apenas as localizações temporárias de memória são apagadas e a granularidade de instrução X é preservada desde que a execução do granulo de código Y corrente foi atrasada até poder χ' _ ser processada com a granularidade de instrução após o processamento de um acontecimento assíncrono.
2. Se ocorrer um acontecimento assíncrono após as instruções Y nos grupos G1 e G2 terem sido executadas e se não houver instruções Y no grupo G3, o se o acontecimento ocorrer após a execução de todas as instruções Y incluídas no grupo G3 como foi indicado por uma seta 73 na FIGURA 6, o processamento do acontecimento assíncrono pode ser brevemente atrasado à medida gue as instruções do grupo G4 são executadas com conhecimento prévio que não são possíveis estados de excepção. Novamente a execução é provida com a granularidade da instrução X.
No caso em que são incluídas múltiplas instruções Y no grupo G3 (não mostrado na FIGURA 6) e ocorre um acontecimento assíncrono após ter sido executada uma instrução Y, mas pelo menos uma instrução Y no grupo G3 fica sem ser executada, pode-se providenciar a atomicidade de memória dentro do granulado de código Y para preservar a granularidade de instrução da instrução X. A atomicidade de memória requere essencialmente que todos os acessos de memória da instrução X pareçam acontecer ou nenhum pareça acontecer e, é necessário para a granularidade de instrução X.
A atomicidade e os mecanismos para a atingir nestes casos bem como outros casos especiais são considerados mais em pormenor no pedido de patente em referência cruzada e correntemente arquivada (1870-0409). Na execução preferida no qual as instruções X simples de escrita única são tratadas, a atomicidade de estado de memória e a granularidade de instrução X são atingidas concorrentemente.
Com referência de novo à Figura 3, uma vez que o bloco funcional 68 ordena as instruções de código Y como foi descrito, o bloco 70 determina se a instrução Y corrente é uma marca de fronteira ou granulo de X para a instrução X da qual derivou. Os bits de sim e não detectados para instruções Y sucessivamente processadas são registados um mapa de fronteira de bit de instrução X, pelo bloco funcional 72.
Um bloco de teste 74 verifica se são listadas mais instruções X para processar a tradução. Se assim é, repete-se o laço 64. Quando todas as instruções X tiverem sido traduzidas termina ciclo de laço e o código Y acumulado é disponibilizado para output, como é indicado no bloco funcional 76.
Os dois exemplos seguintes específicos de instruções CISC da arquitectura VAX^R^ exemplificam a função de tradução de acordo com a invenção.
EXEMPLO 1;
INCL (Rl) +
Esta instrução adiciona 1 à palavra-longa (4-bytes” ou 32 bits”) de memória cujo endereço está contido em Rl. Rl é então incrementado para apontar à próxima palavra-longa. 0 próximo código RISC (Y) foi gerado do tradutor a operar com os critérios de organização descritos:
ldl R23, (rl) ; carregue o conteúdo da memória no endereço (Rl) a (R23) addl R23, # 1, R24 ; Incremente R23 de 1 e ponha em R24 rtl R24, (rl) ; Armazene R24 em memória no endereço (Rl)
Ida rl, 4 (rl); Incrementa Rl de Quatro para apontar para a próxima palavra-longa.
EXEMPLO 2:
MOVL (Rl) +, R2 +
Esta instrução move a palavra-longa da memória endereçada pelos conteúdos de Rl para a palavra-longa endereçada pelos conteúdos de R2. Tanto Rl e R2 são incrementados para apontar para a próxima palavra-longa após a originalmente apontada quando a instrução começou. 0 código RISCs (Y) seguinte foi gerado a partir do tradutor a operar com os critérios de organização descritos.
ldl r23, (rl) ; Carregar os conteúdos de memória em (Rl) a R23
stl r23, (r2) ; Armazenar os conteúdos de R23 na memória ou a
localização (R2)
Ida rl,4 (rl) ; Incremente Rl de Quatro para apontar a
próxima palavra-longa.
1 Ida r2, 4 (r2) ; Incremente R2 de Quatro para apontar à
próxima palavra-longa.
Para executar o código resultante Y com a granularidade de instrução X garantida, um processador Y 80 correspondente ao sistema de computador Y 20 (FIGURA 1) é providenciado para executar o código resultante Y com a granularidade de instrução X garantida a ser preservada. Os dispositivos convencionais de input/output de dados 82 e um relógio de intervalo, são acoplados ao processador Y 80, e de tempos a tempos estes dispositivos geram interrupções constituindo acontecimentos assíncronos que exigem uma divergência temporária de operação do processador do código de execução Y. (FIGURA 4). Sem a granularidade de instrução X garantida, a diversão do processador causada por estas ou outras interrupções é capaz de causar uma quebra da granularidade de instrução X na execução do código Y. Isto ocorre tipicamente devido a possíveis modificações de input de instruções Y após a interrupção mas antes de serem feitas as modificações ao estado de memória pela instrução Y corrente.
Conforme se mostra na FIGURA 4, um bloco 68 representa o input do código Y gerado de um dispositivo de input a uma secção 88 de um sistema de memória 90 acoplado ao processador Y 80 e um bloco 87 representa os dados de output gerados para os dispositivos de output como resultado da execução do código Y. 0 sistema de memória 90 inclui também uma secção de dados convencional 92 e um sistema operativo convencional secção 94.
Um programa de controlo de granularidade de instrução (IGC) 96 é armazenado noutra secção de memória designada pelo mesmo carácter de referência. A operação do programa IGC 96 na execução do código Y é representada em mais detalhe pelos fluxogramas nas FIGURAS 5A e 5B.
O programa IGC 96 (FIGURA 5A) começa conforme indicado em 98 com a geração de um acontecimento assíncrono. Geralmente, um acontecimento assíncrono é definido como uma diversão da corrente de instrução Y devido a interrupções as quais poderiam gerar potencialmente modificações de estado X que são visíveis ao código X traduzido. Faz-se de novo referencia à FIGURA 6 para uma representação diagramãtica da relação de acontecimentos assíncronos a um granulo X de instrução Y. O que se segue exemplifica a interacção de um acontecimento assíncrono com a cadeia de instrução Y.
Execução normal: YO Y1 Y2 Y3 Y4 Y5
Fronteira de inst. X --------- ---- ---Execução de acontecimento assíncrono: YO Y1 Y47 Y48 Y49
Ocorre acontecimento ------------0 programa IGC 96 tem de alinhar o endereço da instrução X para Y1 (Se Y2 tiver uma possível excepção como se define subsequentemente) ou para Y3 (executando Y2 se Y2 não tem excepções possíveis) antes de executar quaisquer outras modificações no estado de X.
Referindo de novo o fluxograma na FIGURA 5A, posiciona-se uma espera temporária ao processar o acontecimento assíncrono pelo bloco funcional 100 e o endereço de memória da instrução Y (designado por PC-AE) sendo processado no momento do acontecimento assíncrono é registado pelo bloco funcional 102.
De seguida o mapa de bit previamente referenciado é verificado pelo bloco 104 para determinar se o PC-AE da instrução Y é uma fronteira de instrução. Se for, o bloco de teste 106 dirige o programa IGC sobre o caminho 107 para o bloco 108 o gue permite o recomeçar do processamento do acontecimento assíncrono, sem quebrar a granularidade da instrução de código X.
Se o PC-AE de instrução Y não for uma fronteira de instrução X o bloco funcional 110 alinha o contador PC, de
instruções com a próxima antecedente ou próxima seguinte instrução Y que por uma proteína de instrução X. Um caminho do programa 111 é então seguido pelo programa IGC 96 para o bloco 108 para o processamento de acontecimentos assíncronos como para previamente descrito sem quebrar a granularidade de instrução de X. Nesta altura, o acontecimento assíncrono ocorreu num ponto em tempo quando nem todas as instruções X foram executadas de acordo com um granulo de instrução Xe, a conservação da granularidade de instruções de X é atingida através da operação do bloco de programa 110, conforme é mais detalhado na FIGURA 5B. As marcas ”A e ”B” na FIGURA 5A indicam se os blocos de detalhe da FIGURA 5B encaixam no fluxograma da FIGURA 5A.
Na FIGURA 5B, uma pesquisa mais avançada das instruções Y é feita pelo bloco funcional 112 num laço de programa 113 para encontrar a próxima instrução Y que é uma fronteira de instrução de X. O bloco de teste 114 verifica cada instrução Y pesquisada em avanço para determinar se processar a interrupção prioritariamente à execução das instruções Y remanescentes pode produzir um resultado de execução de código Y diferente do resultado que teria sido produzido se os correspondentes códigos X sendo executados, com a imposição do mesmo acontecimento assíncrono.
Ao fazer cada teste a instruções Y, em avanço, o bloco de teste 114 determina preferencialmente se se pode produzir numa condição de excepção ao tentar a execução da instrução Y se se permitisse o processamento do acontecimento assíncrono e rescindir então a execução da sequência de código Y. Geralmente, uma instrução tem uma excepção se possivelmente não pode ser completada. As seguintes são as classes gerais de excepções que, se forem identificadas a uma instrução Y em avanço, geram o abortar à próxima prévia instrução Y que é uma fronteira de X;
1. Excepções de gestão de memória tais como violações ao controlo de acessos ou falhas de página.
2. Excepções aritméticas tais como transbordo de ponto flutuante ou falhas de divisão por zero.
3. Excepções de instruções tais como códigos de operação ilegais ou códigos de operação de ponto de quebra.
Na execução preferida da invenção, uma lista das excepções aplicáveis para o código sendo traduzido é posicionada em armazenamento acessível ao programa IGC durante a execução.
As determinações de execução são assim feitas referenciando cada instrução Y pesquisada para a frente contra a lista de excepções armazenada.
O seguinte é um exemplo de um caso de excepção:
Uma localização de memória é incrementada por um acontecimento assíncrono.
INCL ê # 33 incrementa a localização 33.
As instruções RISC são:
LDL R23,33 (R31) ; Armazenar R23 da localização 33
LDA R23,l (R23); Adicionar 1 ao conteúdo de R23
STL R,23,33 (R31); Armazenar resultado de R23 de volta à localização 33.
Se ocorrer o acontecimento assíncrono entre as instruções LDA e STL e, o processamento do acontecimento assíncrono incrementa a localização 33, o incremento feito durante o acontecimento ter-se-ia perdido quando se reinicia a cadeia na instrução STL. O seguinte é um exemplo de um caso sem excepção:
A instrução INCL Rl incrementa Rl. A instrução RISC é:
LDA Rl,l (Rl); incrementar Rl
Não há aqui oportunidade para uma excepção.
Se, ao testar sucessivamente instruções Y na pesquisa avançada e, se todas as instruções Y pesquisadas mostrarem não ter excepções (bloco 116) as instruções Y remanescentes são executadas antes do processamento acontecimento assíncrono ser disponibilizado pelo bloco 108 (FIGURA 5A) sem quebrar a granularidade da instrução X como previamente foi descrito. Por outro lado, se uma instrução Y pesquisada em avanço mostrar uma excepção devido ao teste pelo bloco 118, o bloco funcional 118 segura o contador de programa Y para a próxima instrução Y de segurança que é uma fronteira de instrução de X, e o processamento de acontecimento assíncrono é de novo disponibilizado pelo bloco 108 (FIGURA 5A) sem quebrar a granularidade da instrução X.
Desta forma, mesmo uma possibilidade de quebra na granularidade de instrução X é evitada e a granularidade de instrução X é consequentemente garantida.
Em resumo do caso de tradução de uma instrução não tendo escritas a estados, ou apenas uma simples palavra-longa completa alinhada ou escrita de quadri-palavra, não há problemas de byte o escrita não alinhada e não há problemas de interbloqueio. 0 único problema é o de fazer quer a sequência inteira ou nenhuma das sequências parece executar-se. A tradução é restringida de tal forma que no caso de uma tradução ClSC-para-RISC, os primeiros e segundos grupos de instruções RISC fazem todo o trabalho da instrução CISC excepto actualização de estado de memória e/ou de registo o terceiro grupo de instruções RISC incluem zero ou uma instrução de armazenamento RISC para uma palavra-longa completa alinhada, ou quadri-palavra e, o quarto grupo de instruções RISC incluem apenas movimentos de registo simples.
Uma sequência traduzida que é interrompida antes de se completar o segundo grupo de instruções é forçada a reiniciar-se no inicio da sequência usando uma tabela de bit que marca o inicio do código para cada instrução CISC a traduzir. Uma sequência traduzida a qual é interrompida após se completar o segundo grupo de instruções mas antes de se completar o terceiro grupo de instruções é forçada a completar o terceiro grupo de instruções com movimentos de registo simples.
efeito liquido é que a sequência ou se executa do principio ao fim sem qualquer outra sequência traduzida no meio, ou é suspensa antes da completação do grupo e tentada de novo, desde o inicio mais tarde. Este caso também se aplica a uma escrita não interbloqueada de 1 ou 2 bytes numa máquina de monoprocessador. A sequência traduzida na escrita simples é a instrução do grupo 3.
A presente invenção diz respeito mais particularmente a um método de operar o sistema de computador 20 Y da FIGURA 1 durante a execução de um programa de computador Y o qual é uma tradução de um programa de computador X. Por outras palavras, a presente invenção mais em particular diz respeito ao relato de um
erro quando um programa em código fonte 10 é migrado para o código Y executável pelo caminho indirecto 24. Nesta situação a informação de correcção tipicamente gerado pelo compilador X 16 inclui os endereços das instruções no código executável X. Conforme será mais além descrito abaixo, contudo, o hardware de excepção e o código Y executável 22A está organizado e opera sobre endereços de código X. A presente invenção providencia uma ligação entre um primeiro endereço de uma instrução de código Y;
erro
endereçouma instrução código Y foi traduzida. Esta
segundo instrução de procedimento causa código qual ligação é usada num
(80 FIGURA 4) e termina com o relatório do erro em associação com uma indicação da instrução de código X.
errosqual processador
Voltando agora à FIGURA 7, mostra-se aí, o hardware geralmente designado por 130 no processador Y (80 FIGURA 4) para responder a um sinal de excepção respectivo de qualquer uma de uma pluralidade de excepções de input 131. Os sinais de excepção, por exemplo, podem incluir sinais do erro de paridade indicando falhas de hardware excepções de memória resultando de instruções de acesso de memória, e excepções aritméticas de uma unidade aritmética e lógica 132 resultantes de instruções aritméticas.
A presente invenção respeita mais em particular, o relatar de erros de programas de aplicação os quais geram excepções, tais excepções aritméticas da unidade aritmética e lógica 132. As excepções aritméticas da unidade aritmética e lógica 132. As excepções aritméticas incluem, por exemplo, transbordo de inteiros ou ponto flutuante, no qual o resultado é demasiado grande para ser armazenado num formato pré-definido de inteiro ou de ponto flutuante; A divisão por zero de inteiros ou de ponto
flutuante, no qual o divisor fornecido é zero; e um sub-transbordo de ponto flutuante no qual o resultado é demasiado pequeno para ser expresso por um formato pré-definido de ponto flutuante.
A unidade aritmética e lógica 132 sente a presença das condições de excepção aritméticas sempre que é executada uma operação aritmética.
Algumas das instruções de código Y, contudo, indisponibilizam ou evitam a condição de excepção de gerar um sinal de excepção, e outras instruções de código Y permitem de que uma condição de excepção aritmética gere um sinal de excepção. Esta função está ilustrada na FIGURA 7 por um portão de E 133.
processador Y é capaz de responder a apenas uma única das excepções de input a qualquer dada altura. A fim de lidar com a situação de múltiplos sinais de excepção simultâneos. Os inputs de excepção 131 são recebidos num codificador prioritário 134 o qual selecciona um único dos sinais. 0 sinal de excepção ao qual foi dada prioridade é indicado pelo código fornecido pelo codificador 134.
Os inputs de excepção 131 são combinados num portão de OU” 135 a fim de providenciar um sinal de excepção o qual é reconhecido pelo controlo lógico 136. 0 controlo lógico 136 suspende temporariamente a execução de instruções código Y e controla a colecção de dados pertencentes à excepção dos respectivos registos ou portões de transmissão 137, 138, 139. Os dados pertencentes à excepção incluem o PC de excepção o qual é o endereço de código Y (PC-AE) da instrução causando a excepção; PSL da excepção o qual é o estado de palavra-longa de programa indicando o estado do processador ã altura da execução da instrução causando a excepção, e a informação do tipo de excepção o
qual define o tipo de excepção. No caso de umà excepção aritmética, por exemplo, a unidade aritmética e lógica 132 providencia um código indicando o tipo de excepção aritmética. Em resposta ao código da excepção tendo prioridade, um multiplexer 140 selecciona o tipo de informação de excepção para a excepção seleccionada pelo codificador prioritário 134.
controlo lógico 136 causa a informação de excepção de ser posicionada sequencialmente num bus de dados 141 e empilhada na memória de pilha nuclear. Então, em resposta ao código da excepção seleccionada pelo codificador de prioridade 134, um vector de excepção respectivo é lido de uma tabela de despacho de excepção 142 e carregada no contador de programa 143. O controlo lógico 136 começa então a execução de instrução começando no vector de excepção no contador de programa 143.
Virando-nos agora para a Figura 8, mostra-se aí no fluxograma geralmente designado 150, que ilustra mais além a operação do hardware da FIGURA 7 em conecção com uma rotina do sistema operativo para lidar com excepções. Conforme foi acima descrito na FIGURA 7, quando ocorre uma excepção, o hardware da FIGURA 7 suspende a execução da instrução como foi notado no passo 151 da FIGURA 8, então posiciona o PC de excepção, o PSL de excepção e a informação de tipo de excepção na pilha do modo de núcleo, conforme notado no passo 152, e então carrega o contador de programa com o respectivo vector de excepção da tabela de despacho conforme notado no passo 153. Neste caso, o vector excepção é um tratador de excepções no modo núcleo do sistema operativo.
A rotina de tratamento de excepções do sistema operativo começa no passo 154 verificando se a excepção é uma excepção de modo utilizador por forma a ser lidada por um programa de
utilizador em vez de apenas pelo sistema operativo. Um erro de hardware ocorrendo em resposta à execução de uma instrução, por exemplo, normalmente não seria um erro de modo utilizador e, o sistema operativo trataria a excepção no passo 155. Para uma excepção de modo utilizador no passo 156 a informação de excepção que fora colocada na pilha modo núcleo e os conteúdos dos registos de trabalho geral no processador Y são posicionados na pilha de modo utilizador. Finalmente, no passo 157, os saltos de execução para a rotura de excepção de modo utilizador definida para lidar com as excepções.
Virando-nos agora para a FIG. 9, mostra-se aí um fluxograma 160 da rotina de excepção de modo utilizador. No primeiro passo 161, a informação de estado de máquina X é tida em conta. Por outras palavras, um modelo consistente de estado de máquina X é reconstruído nos registos da memória Y e memória de utilizador como será mais tarde descrito abaixo em conecção com um exemplo especifico de código Y para a instrução INCB-(Rl) de código X, as instruções de código X são traduzidos para código -Y de uma tal forma que um modelo consistente de estado de máquina X pode ser reconstruído no passo 161. De seguida, no passo 162, o endereço Y da instrução de código -Y tendo a excepção é armazenada numa localização de memória Y-A DDR a qual está disponível mais tarde para relato de erro de acordo com o método da invenção.
Nos passos 163 e 164 o apontador de endereço-Y PC-AE está alinhado a uma fronteira de instrução granular de X, como foi descrito acima em conecção com os passos 106 e 110 da FIGURA 5A. Isto pode permitir a recuperação e a continuidade da execução de programa do apontador alinhado de endereço -Y PC-AE. Quando há um programa de tratamento de condições. A disponibilidade de um programa que lida com condições para o tipo de excepção é
verificado no passo 165. Quando um tal programa que lida com condição está disponível, a execução ramifica-se para o programa que lida com condições no passo 166.
De outro modo, no passo 167, modo utilizador obtém o endereço da instrução de código X da qual a instrução de código Y causando o erro foi traduzida. 0 método preferido de obter este endereço de instrução X correspondente a Y-ADDR é descrito mais em detalhe mais abaixo com a referência à Figura 13.
No passo 168, o erro é relatado conjuntamente com a sua associação com a instrução X tendo o endereço de X correspondente ao Y-ADDR. O procedimento de relato de erro preferido é descrito com mais detalhe mais abaixo com referência à FIGURA 15. Em geral, um programa de código Y para executar o passo 168 pode ser obtido traduzindo um programa de código X para relatar erros que ocorrem quando os programas de aplicação de código X são executados por um sistema computacional, e modificando ligeiramente o programa traduzido de forma que refere o endereço da instrução X conforme o endereço da instrução que causou o erro e assim que qualquer outra informação de estado de máquina X da qual é referenciadora é a informação de estado da máquina X reunida no passo 161. Assim sendo, uma vantagem importante da presente invenção é que permite existir rotinas de correcção de código X para serem traduzidas e usadas com ligeira modificação para correcção de programas de aplicação traduzidos que correm em sistemas de computador de código-Y.
A execução preferida da invenção usa uma tabela de correlação de endereços X-Y para obter o endereço de instrução X correspondente ao Y-ADDR.
Como se mostra na figura 10, a tabela de correlação de endereços 170 inclui entradas 171 tendo cada uma um endereço 172 de uma instrução respectiva no programa de aplicação e um endereço 173 de uma instrução correspondente no programa de aplicação tendo sido traduzido do programa de aplicação X. Cada endereço 172, 173 por exemplo, é uma palavra-longa de 32 bits”. Quando uma instrução para um respectivo endereço X na tabela é traduzida para uma série de instruções de código Y no programa de aplicação de código Y, então o endereço correspondente de instrução de código -Y na entrada da tabela é o endereço da primeira instrução na série de instruções.
Preferivelmente nem todos os endereços das instruções no programa de aplicação de código X estão incluídas no endereço X-Y, na tabela de correlação 170. De outra forma a tabela torna-se muito grande, o que consumiria um grande bocado de memória e desnecessariamente aumentaria o tempo para pesquisa da tabela. Em aditamento a ser usado para relatar erros de acordo com a presente invenção, a tabela 170 pode ser usada para retorno de um interpretador de código X quando executam uma tradução parcial de um programa de aplicação de código X. Embora seja sempre desejável uma tradução completa, nem sempre é possível executar uma tradução completa devido à dificuldade em encontrar todo o código X num programa de aplicação de código X. Nesta situação o interpretador de código X pode voltar eficientemente à execução de código Y na tradução, conquanto os endereços de código X na tabela 17 sejam pontes de entrada de blocos básicos de código X no programa de aplicação de código X. Cada bloco básico é uma sequência de instruções contíguas que têm um único ponto de entrada conhecido no inicio do bloco básico. A execução é apenas transferida para o inicio dos blocos básicos e, a execução é somente transferida dos finais dos blocos básicos. As traduções parciais e a operação de um interpretador numa tal situação são
mais detalhadamente descritas na, acima referenciada com o numero de série 07/666,196 requerida em 7 de Março de 1991, com o titulo AUTOMATIC FLOWGRAPH GENERATION FOR PROGRAM ANALYSIS AND TRANSLATION por Richard L. Sites, aqui incorporada por referência.
Virando-nos agora pará a FIGURA 11, mostra-se aí um exemplo de uma porção de um programa de aplicação de código X, chamado MAIN, o qual foi desenhado na forma de fluxograma 18 a fim de ilustrar os blocos básicos de programa. 0 primeiro bloco básico consiste da INSTRUÇÃO-1 X. O segundo bloco básico consiste de INSTRUÇÃO-X-2, INSTRUÇÃO-X-3 e INSTRUÇÃO-X-4. O terceiro bloco básico consiste da INSTRUÇÃO-X-5. O quarto bloco básico começa com a INSTRUÇÃO-X-6. Também mostrada na FIGURA 11 está a correspondência entre as instruções de código X e as suas correspondentes instruções de código Y INSTRUÇÃO-Y-1 a INSTRUÇÃO-Y-14 e, os endereços de código-X e código-Y na tabela de correlação de endereços 170 da FIGURA 11.
A execução preferida da invenção também usa o mapa de fronteira de bit” de instrução para obter o endereço da correspondente instrução X para o Y-ADDR na situação típica onde o Y-ADRR não se encontra numa entrada na tabela de correlação de endereços X-Y. Virando-nos agora para a FIGURA 12, mostra-se aí o formato preferido para o mapa de fronteira de bit de instrução 185. As guardas de um só bit, tais como a guarda 186, são armazenadas em palavras-longas, tal como a palavra-longa 187. Cada guarda corresponde a uma instrução de código Y, e a guarda é posicionada pelo tradutor (32 na FIGURA 1) quando a correspondente instrução de código Y é uma fronteira de instrução.
Preferivelmente as guardas no mapa de fronteira de bit de instrução 185 são também posicionadas para indicar fronteiras granulares artificiais no código X VAX^ . O desejo de indicar fronteiras granulares artificiais levanta-se guando traduzindo as instruções de código X tendo armadilhas precisas para instruções de código-Y RISC que não têm armadilhas precisas. Uma instrução tem uma armadilha precisa quando a execução da instrução produz o mesmo resultado quando se levanta uma condição de excepção (outra que era’ gerar um sinal de excepção) sem atender a se a excepção for disponibilizada ou não.
No sistema de computador RISC preferido, as instruções aritméticas não têm armadilhas precisas porque a complexidade adicional de circuitos e os ciclos de execução são requeridos para completar o resultado das instruções aritméticas após serem detectadas as condições de excepção; mas se o programador quer emolar armadilhas precisas, pode ser feito com um par de instruções. A operação é primeiro codificada com uma instrução tendo armadilhas desactivadas e, então a operação é codificada uma outra vez com uma instrução tendo armadilhas activadas. A fim de preservar a granularidade da instrução X para o código Y RISC, uma instrução de armadilha dreno DRAINT é codificada após as armadilhas da instrução terem sido activadas. Porque o sistema de computador RISC poderá de outra forma executar mais do que uma instrução simultaneamente, incluindo a instrução tendo armadilhas activadas conjuntamente com uma instrução seguindo a instrução tendo armadilhas activadas, a instrução DRAINT assegura que quando uma armadilha ocorre o estado da máquina X pode ser facilmente reunido no passo 161 da FIGURA 9 para formar um estado de máquina X correspondente à completação da instrução de código X tendo sido traduzidas.
Um exemplo especifico da tradução de uma instrução de código X numa série de instruções de código Y incluem uma instrução de código Y tendo armadilhas aprovadas é dado abaixo:
TITULO Incrementação de Byte*' Exemplo de código
O seguinte código duplica: INCB-(Rl)
Com a atomicidade VAX^R^ e usando uma rotina PAL para armazenar os resultados ========= Fronteira granular VAX^
BIS R31, R31, R24; Contagem clara de interferência
TOPO: RS R31; Posiciona a guarda usada pela rotina PAL para testar a existência de interrupções ou Excepções
LDQU R16, -1(R1); Muito provavelmente não alinhado
LDA R17-1(R1); Endereço usado para alinhar bytes
EXTBL R16,R17,R18; BYTE a 0000000A
SLL R18 #56, R18; BYTE a A 0000000
BIS R31#l, R19; Posição constante 1
SLL R19, #56, R19; 10000000
ADDQ R18, R19, R16; Incremente para B0000000 (sem armadilha)
SRL R16,#56,R16; BYTE a 0000000B
CHAMADA-PAL TRN-STB; Armazenar Byte em R16 no endereço em R17
BEQ - R0, INTERFERE; Falhou, faça disto um ramo avançado para completar a predição do ramo
SUBQ Rl, #1, Rl; Executar Auto-decrementação (Sem armadilha) ======== Fronteira granular artificial
ADDQ/V R18, R19, R16; Operação Redo para obter armadilha de transbordo se houver,
DRAINT ; Espere por armadilha se houver.
======== Fronteira granular VAX^ ; Verifique para ver se há demasiadas interacções no laço
Interfere ADDQ R24, #1, R24;; Incremente o Contador de Interferência
CMPULE R24, #255, R0; ; Tem estado aqui por algum tempo?
BNE R φ, TOP ;; Para, tentar de novo
VERIFICA ERRO ; ; Abortar . END
Neste exemplo a instrução ADDQ ocorre uma primeira vez com armadilhas desactivadas para providenciar um resultado aritmético completo e, uma segunda vez perto do fim da série de
instruções de código Y com armadilhas activadas, seguidas por uma instrução DRAINT. 0 endereço da instrução tendo armadilhas activadas está indicado acima como uma fronteira artificial granular e a sua guarda correspondente é posicionada no mapa de fronteira de bit de instrução. Isto providencia melhores produtividades ao lidar com interrupções porque o resultado da instrução de código X (outro para além da armadilha possível) completa-se na fronteira artificial granular. Assim sendo, quando ocorre uma interrupção justamente antes da armadilha, o PC-AE pode ser alinhado com a fronteira granular artificial no passo 110 da FIGURA 5A para preservar a granularidade de instrução de código X sem completamente segurar a instrução de fronteira no inicio do código Y traduzido da instrução de código X.
Voltando-nos agora à FIGURA 13, mostra-se aí um fluxograma 190 do procedimento preferido para usar a tabela de correlação de endereços X-Y (170 FIGURA 10) e o mapa de fronteira de bit de instrução (185 na FIGURA 12) para encontrar o endereço da instrução de código X correspondente ao endereço de código Y Y-ADDR. No primeiro passo 191, a tabela de correlação de endereços X-Y é pesquisada para encontrar o maior endereço de código na tabela (Y-ADDR-MAX) que é menor ou igual para o Y-ADDR. Depois, no passo 192, os conteúdos de uma localização de memória de um endereço-X é posto igual ao endereço de código-X da tabela de entradas incluindo Y-ADDR-MAX. Então, no passo 193, o procedimento da FIGURA 13 é terminada, com o endereço de código X desejado em ENDEREÇO-X quando o Y-ADDR-MAX é igual a Y-ADDR. De outra forma no passo 194, os conteúdos de uma localização de memória COUNT são limpos para iniciar a contagem do número de instruções de fronteira de código Y entre o Y-ADDR e o Y-ADDR-MAX. Isto é feito enquanto se pesquisa o mapa de fronteira de bit de instrução.
\· '
No passo 195, a guarda no mapa de bit na posição correspondente a (Y-ADDR) é testado. Quando a guarda é posicionada, então no passo 196 o código-operação da seguinte instrução (em Y-ADDR+4 porque as instruções têm 4 bytes de comprimento na arquitectura de instrução Y) é inspeccionada para verificar se se trata de uma instrução DRAINT. Quando isto é o caso, a instrução em Y-ADDR é uma instrução tendo armadilhas activadas, e a guarda correspondente encontrada no passo 195, de ter sido posicionada, é uma guarda para uma fronteira granular artificial. Se a guarda é posicionada mas não for para uma fronteira artificial granular, então no passo 197 o COUNT é incrementado de um.
No passo 198, Y-ADDR é descrementado de quatro bytes correspondendo ao comprimento de uma instrução de código RISC. A fim de testar se a pesquisa de volta a Y-ADDR-MAX terminou, Y-ADDR é comparado com Y-ADDR-MAX e, quando Y-ADDR é maior que Y-ADDR-MAX, a pesquisa contínua no passo 195. De outra forma, no passo 200, o valor de COUNT é comparado a zero. Quando COUNT é zero, o valor do endereço-X é o endereço desejado para a instrução do código-X e, a execução continua no passo 168 da FIGURA 9. De outra forma no passo 201, o endereço-X é usado como uma instrução de código de descodificação e é avançado por análise morfológica de uma instrução de código-X e, no passo 202, COUNT é descrementado de 1. Os passos 200, 201 e 202 são repetidos até o numero de instruções X serem analisados morfologicamente e, o endereço X torna-se avançado para o endereço desejado.
Virando-nos agora à figura 14, mostra-se aí um diagrama de bloco de informação de correcção 220 tendo sido gerados quando o programa de aplicação de código X foi compilado. Para permitir o relato de um número de linha em código fonte correspondente a um dado endereço de instrução de código X, a informação de correcção inclui o seguir na pista de informação 221. A
informação de seguir na pista, por exemplo inclui uma lista de registos do alcance do endereço de código X indica o alcance de endereço das instruções de código X compilado da linha de código fonte. Alguns compiladores compilam módulos de código fonte reparados que são ligados em conjunto pelo programa de ligaçao (18 na FIGURA 1). Neste caso, o compilador gera uma tabela de módulo (nao mostrada) que tem registos incluindo nomes de módulos e alcances de endereço de código-X associado. Neste caso o compilador gera também uma tabela reparada de informação de seguir pista para cada módulo.
A informação de correcção 220 inclui mais ainda informação de nomes simbólicos 222 associando nomes simbólicos que ocorrem no código fonte da aplicação com endereços de memória e localizações de pilha referenciadas no programa de aplicação de código-X.
A informação de nome simbólico 22, por exemplo, inclui registos do alcance de endereço do código-X associado com cada variável global no código fonte, e os registos do alcance de endereço de código-X associados com cada rotina no código fonte. Em adição, cada rotina poderá ter associada com um número de registos da estrutura da pilha para cada variável local na rotina. Os registos da informação de nome simbólico 222 inclui apontadores às cadeias 223 que contêm os nomes simbólicos no código ASCII.
Virando-nos agora para a FIGURA 15, mostra-se aí o procedimento preferido para usar a informação de correcção da FIGURA 14 para relatar um erro e as suas associações com o endereço-X da instrução de código-X geradora do erro. No passo 231 os registos de seguir na pista de informação (221 na FIGURA 14) são pesquisados para um registo tendo um alcance de endereço ê encontrado no registo é o tipo de relataerro é para o no passo 234 os registos nome incluindo o endereço-X. Quando um tal registo passo 232, o número de linha de código fonte no do ao programador ou utilizador. No passo 233 determinado da informação de tipo de excepção e relatado programador ou utilizador. De seguida, de informação de nome simbólico são pesquisados para um simbólico associado com o erro. Os registos das rotinas, por exemplo, são pesquisados para um registo tendo um alcance de endereço incluindo o endereço-X. Se um nome de rotina associado for encontrado, é relatado no passo 235 a par e passo com o seu tipo e a sua cadeia ASCII. No passo 236, quando o nome simbólico é uma subrotina, o relato de erro continua para o passo 237. No passo 237 a pilha na informação de estado de máquina-X (reunida no passo-161 da FIGURA 9) é inspeccionada para providenciar uma pista de uma cadeia de rotinas de chamada que terminam com uma subrotina, a qual é relatada ao programador ou utilizador.
Nos passos 234 e 235 as variáveis locais e globais associadas com um erro podem também ser encontradas e relatadas. No caso de um transbordo ou erro de subtransbordo, por exemplo, a instrução de código-X no endereço-X e umas poucas de instruções seguintes podem ser inspeccionadas numa tentativa de identificar um endereço resultante de uma variável local ou global na qual o resultado da operação aritmética é armazenado. No caso de um erro de divisão por zero, algumas instruções de código-X precedentes podem ser inspeccionadas numa tentativa para identificar o endereço fonte de uma variável global ou local da qual o divisor se originou.
Exemplos de mensagens de erro que poderiam ser relatadas usando o procedimento da FIGURA 15 incluem o seguinte:
- · -X / Λ./
LINHA 200 TRANSBORDO DE INTEIRO NA SUBRCXTINA DIVIDEND QUANDO CHAMADA PELA MAIN NA LINHA 50, RESULTADO ARMAZENADO NA VARIÁVEL LOCAL TOTAL.
LINHA 500 DIVISÃO POR ZERO, PONTO FLUTUANTE NA SUBROTINA STOCK QUANDO CHAMADA PELA ROTINA MAIN NA LINHA 75, DIVISOR DA VARIÁVEL GLOBAL SHARES.
Atendendo ao anteriormente descrito, foi descrito um método e um sistema para relatar um erro ocorrendo durante a execução de um programa de aplicação de código-Y no contexto de um programa de aplicação de código-X do qual o programa de aplicação de código-Y foi traduzido. A invenção providencia o endereço no código-X de uma instrução de código-X correspondente à instrução de código-Y que causou o erro, conjuntamente com informação consistente sobre o estado que uma máquina de Código-X teria sobre a completação da execução da instrução de código-X. Assim o erro pode ser relatado por rotinas de correcção que são traduzidas do código-X para o código-Y e que usam informação de correcção gerada durante a compilação do código ponte para o programa de aplicação de código-X.

Claims (16)

  1. REIVINDICAÇÕES ia. - Método de operar um computador digital para relatar a ocorrência de um erro durante a execução de um segundo programa de computador que é uma tradução de um primeiro programa de computador, incluindo o primeiro programa de computador instruções de um primeiro conjunto de instruções baseado sobre uma primeira arquitectura de instrução, tendo cada uma das referidas instruções no referido primeiro programa de computador um endereço respectivo, incluindo o referido segundo programa de computador instruções de um segundo conjunto de instruções baseado numa segunda arquitectura de instrução, cada uma das referidas instruções no referido segundo programa de computador tendo um endereço respectivo, algumas das referidas instruções no referido primeiro programa de computador tendo uma sido traduzida numa respectiva pluralidade das referidas instruções no referido segundo programa de computador, sendo o referido erro causado pela execução de uma das referidas instruções no referido segundo programa de computador, caracterizado por compreender os passos de:
    (a) abortar a execução do referido segundo programa de computador quando ocorre o referido erro; e depois;
    (b) determinar um primeiro endereço de uma referida das referidas instruções no referido segundo programa de computador;
    (c) determinar do referido primeiro endereço um segundo endereço de uma das referidas instruções no referido primeiro programa de computador do qual uma referida das referidas instruções no referido segundo programa de computador foi traduzida;
    (d) relatar o referido erro ocorrido, e usar o referido segundo endereço para indicar que o referido erro estâ associado com uma referida das referidas instruções no referido primeiro programa.
  2. 2â. - Método de acordo com a reivindicação 1, caracterizado por o referido primeiro programa de computador ser compilado de um programa fonte, e a informação de remontar ser gerada quando o referido primeiro programa de computador é compilado, a referida informação de remontar associar números de linha de código fonte no referido programa fonte com endereços de instruções no referido primeiro programa de computador compilado das respectivas das referidas linhas de código fonte e por o referido segundo endereço ser usado conjuntamente com a referida informação de remontar para indicar que o referido erro está associado com uma referida das referidas instruções no referido primeiro programa de computador indicando o número de linha de código fonte do qual a referida das referidas instruções no referido primeiro programa de computador foi compilada.
  3. 3â. - Método de acordo com a reivindicação 1, caracterizado por o referido primeiro programa de computador ser compilado de um programa fonte, e a informação de nome simbólico ser gerada quando o primeiro, referido programa de computador é compilado, a referida informação de nome simbólico associando nomes simbólicos no referido programa fonte com endereços no referido primeiro programa de computador, e por o compreender mais referências à referida informação dos nomes simbólicos para identificar um nome simbólico associado com o referido erro, e relatar o referido nome simbólico juntamente com o referido erro.
  4. 4&. - Método de acordo com a reivindicação 1, caracte- rizado por ser gerada uma tabela de correlação de endereços durante a tradução do referido programa de computador para obter o referido segundo programa de computador incluindo a referida tabela de correlação entradas tendo cada uma o endereço de uma instrução respectiva no referido primeiro programa de computador e um endereço de uma primeira instrução num conjunto de instrução no referido segundo programa de computador, tendo o referido conjunto de instruções no referido segundo programa de computador sido traduzido da referida instrução no referido programa de computador, por o referido passo (c) de determinar a partir do ) referido primeiro endereço um segundo endereço incluir o referenciar a referida tabela de correlação de endereços com o referido primeiro endereço.
  5. 5a. - Método de acordo com os endereços a reivindicação das instruções
    1, caracterizado por nem todos primeiro programa de computador estarem incluídos em no referido entradas na referida tabela de correlação de endereços, ser gerado um mapa de fronteira de ”bit” de instrução durante a tradução do referido primeiro programa de computador para obter o referido segundo programa de computador, indicando o referido mapa de fronteira de de bit de instrução, instruções no referido segundo programa de computador o qual começa conjuntos de instruções traduzidas das respectivas instruções no referido primeiro programa de computador, e por o referido passo (c) de determinar a partir do referido primeiro endereço um segundo endereço incluir adicionalmente pesquisas o referido mapa de fronteira de bit de instrução entre uma primeira posição no referido mapa de bit correspondendo a um primeiro endereço e uma segunda posição no referido mapa de bit correspondente a um endereço no referido segundo programa de computador que está numa entrada na referida tabela de correlação de endereços, e quando ao pesquisar o referido mapa de de fronteira de bit” de instrução contar indicações no referido mapa de bit entre a referida primeira posição e a referida segunda posição para obter uma contagem de instruções; ler da referida entrada na referida tabela de correlação de endereços um terceiro endereço no referido programa de computador e, determinar o referido endereço do referido terceiro endereço e a referida contagem de instruções.
  6. 6â. - Método de acordo com a revindicação 5, caracterizado por o referido segundo endereço ser determinado a partir do referido terceiro endereço por análise morfológica de um número seleccionado de instruções começando do referido terceiro endereço, sendo o referido número seleccionado de instruções baseado na referida contagem de instruções.
  7. 7a. - Método de acordo com a reivindicação 5, caracterizado por o referido mapa de fronteira de bit de instrução incluir também indicações de instruções no referido segundo programa de computador que tem armadilhas activadas e as referidas indicações no referido segundo programa que tem armadilhas activadas não contadas durante a referida contagem de indicações no referido mapa de bit entre a referida primeira e a referida segunda posição para obter a referida contagem de instruções.
  8. 8a. - Método de operar um computador digital para relatar um erro que ocorre durante a execução de um segundo programa de computador o qual é uma tradução de um primeiro programa de computador, tendo o referido primeiro programa de computador, sido gerado por um programa fonte de compilação, incluindo o referido primeiro programa de computador instruções de um primeiro conjunto de instruções baseado sobre uma primeira arquitectura de instrução, cada uma das referidas instruções no referido primeiro programa de computador tendo um respectivo endereço, incluindo o referido segundo programa de computador instruções de um segundo conjunto de instruções baseado sobre uma segunda arquitectura de computador, tendo cada uma das referidas instruções no referido segundo programa de computador um respectivo endereço, algumas das referidas instruções do referido primeiro programa de computador cada uma tendo sido traduzida numa respectiva pluralidade das referidas instruções no referido segundo programa de computador, sendo o referido erro causado pela execução de uma das referidas instruções no referido segundo programa de computador, caracterizado por compreender os passos de:
    (a) abortar a execução do referido segundo programa de computador quando o referido erro ocorre; e depois (b) determinar um primeiro endereço de uma referida das referidas instruções no referido segundo programa de computador;
    (c) referenciar uma tabela de tradução de endereços para determinar a partir do referido primeiro endereço um segundo endereço de uma das referidas instruções no referido primeiro programa de computador do qual a referida das referidas instruções no referido segundo programa de computador foi traduzida;
    (d) referenciar a informação de análise morfológica para identificar uma porção de código fonte no referido programa fonte do qual uma referida das referidas instruções no referido segundo programa de computador foi compilado; e (e) relatar que o referido erro ocorre e, indicando a referida porção de código fonte no referido programa fonte do qual a
    X χ ' referida das referidas instruções no . referido primeiro programa de computador foi compilada.
  9. 10a. - Método de acordo com a reivindicação 9, caracterizado por a informação de nome simbólico ser gerada quando o referido primeiro programa de computador é compilado, associando a referida informação de nome simbólico nomes simbólicos no referido programa fonte com enderexos no primeiro referido, programa de computador e, por compreender adicionalmente o referenciar da referida informação de nome simbólico com o referido erro e, relatar esse referido nome simbólico com o referido erro.
  10. 11a. - Método de acordo com a reivindicação 9, caracterizado por ser pelo menos um dos referidos nomes simbólicos ser um nome de uma rotina no referido programa fonte que inclui código fonte do qual uma referida das referidas instruções no referido primeiro programa de computador foi compilada.
    122. - Método de acordo com a reivindicação 9, caracterizado por a referida tabela de correlação de endereços incluir entradas tendo cada uma um endereço de uma respectiva instrução no referido primeiro programa de computador a um endereço de uma primeira instrução num conjunto de instruções no referido segundo programa de computador, tendo o referido conjunto de instruções no referido segundo programa de computador sido traduzido da respectiva instrução no referido primeiro programa de computador, por nem todas os endereços das instruções no referido primeiro programa de computador estarem incluídos em entradas na referida tabela de correlação de endereços; por um mapa de fronteira de ”bit” de instrução ser gerado durante a tradução do referido primeiro programa de computador para obter o referido segundo programa de computador indicando, o referido mapa de fronteira de bit” de instrução, as instruções no referido segundo programa de computador que iniciam conjuntos de instruções traduzidas das respectivas instruções no referido primeiro programa de computador; e por o referido passo (c) de referenciar a referida tabela de tradução de endereços incluir adicionalmente o pesquisador do referido mapa de fronteira de bit de instrução entre uma primeira posição no referido mapa de bit correspondente ao referido primeiro endereço e uma segunda posição no referido mapa de bit correspondente a um endereço no referido segundo programa de computador o qual está numa entrada na referida tabela de correlação de endereços e, quando se pesquisa o referido mapa de fronteira de bit de instrução contendo indicações no referido mapa de bit entre a referida primeira posição e a referida segunda posição para obter uma contagem de instruções, ser da referida entrada na tabela de correlação de endereços um terceiro endereço no referido primeiro programa de computador e, determinar o referido segundo endereço do referido terceiro endereço e da referida contagem de instruções.
    133. - Método de acordo com a reivindicação 12, caracterizado por o referido segundo endereço ser determinado do referido terceiro endereço analisando morfologicamente um número seleccionado de instruções começando a partir do referido terceiro endereço sendo o número seleccionado de instruções baseado na referida contagem de instruções.
    143. - Método de acordo com a reivindicação 12, caracterizado por o referido mapa de fronteira de bit de instrução incluir também indicações de instruções no referido segundo programa de computador que tem armadilhas activadas e as referidas indicações no referido segundo programa de computador que tem armadilhas activadas não serem contadas durante a referida contagem de indicações no referido mapa de bit entre a referida primeira e a referida segunda posição para obter a referida contagem de instruções.
    152. - Método de operar um computador digital para relatar a ocorrência de um erro durante a execução de um segundo programa de computador o qual é uma tradução de um primeiro programa de computador, incluindo o primeiro programa de computador instruções de um primeiro conjunto de instruções baseado numa primeira arquitectura de instrução, tendo cada das referidas instruções no referido primeiro programa de computador um endereço respectivo, incluindo o referido segundo programa de computa) dor instruções de um segundo conjunto de instruções baseado numa segunda arquitectura de instruções tendo cada uma das referidas instruções no referido segundo programa de computador um endereço respectivo tendo algumas das referidas instruções no referido primeiro programa de computador cada uma sido traduzida numa pluralidade das referidas instruções no referido segundo programa de computador, tendo a referida tradução gerado uma tabela de correlação de endereços e um mapa de fronteira de bit” de instrução, incluindo a referida tabela de correlação de entradas tendo cada uma um endereço respectivo de uma instrução no referido primeiro programa e um endereço de uma primeira instrução num conjunto de instruções no referido segundo programa tendo sido traduzida da referida instrução, nem todos os endereços das 1 instruções no referido primeiro programa de computador serem incluídos em entradas na referida tabela de correlação de endereços incluindo o referido mapa de fronteira de bit” de instrução, quando indicando instruções no referido segundo programa que são ( primeiras instruções em conjuntos obtidos por traduzirem as respectivas instruções no referido primeiro programa de computador, sendo o referido erro causado pela execução de uma das referidas instruções no referido segundo programa de computador, caracterizado por os passos de:
    <
    X ' (a) abortar a execução do referido segundo programa de computador quando o referido erro ocorre; e depois (b) determinar um primeiro endereço de uma referida das referidas instruções no referido segundo programa de computador;
    (c) determinar a partir do referido primeiro endereço um segundo endereço de uma das referidas instruções no referido primeiro programa de computador do qual uma referida das referidas instruções no referido segundo programa de computador foi traduzido, sendo o referido segundo endereço determinado por
    I referenciar a referida tabela de correlação de endereços para encontrar na referida tabela o maior endereço de uma instrução no referido programa o qual é menor que o referido primeiro endereço e, o correspondente endereço de instrução no referido primeiro programa na mesma entrada da tabela como o referido maior endereço; e pesquisar o referido mapa de fronteira de bit” de instrução para obter um número de contagem das instruções indicadas pela referida guarda no referido segundo programa tendo endereços entre o referido primeiro endereço e o referido maior endereço; e 1 paralisar o referido número de contagem de instruções no referido primeiro programa iniciando no referido correspondente endereço enquanto avança um apontador de endereço de instrução o qual é assim avançado para o referido segundo I endereço; e (d) relatar que o referido erro ocorreu, e usar o referido segundo endereço para indicar que o referido erro está associado com uma referida das referidas instruções no referido primeiro programa.
  11. 16a. - Método de acordo com a reivindicação 15, caracterizado por o referido primeiro programa de computador ser compilado de um programa fonte e, a informação de remontar ser gerada quando o referido primeiro programa de computador foi compilado, a referida informação de remontar associar números de linhas de linhas de código fonte no referido programa fonte com endereços de instruções no referido primeiro programa de computador compilado a partir das respectivas das referidas linhas de código fonte e, por o referido segundo endereço ser usado conjuntamente com a referida informação de remontar para indicar que o referido erro está associado com uma referida das referidas instruções no referido primeiro programa de computador indicando o número da linha do código fonte do qual uma referida das referidas instruções no referido primeiro programa de computador foi compilado.
  12. 17a. - Método de acordo com a reivindicação 15, caracterizado por o referido primeiro programa de computador ser compilado de um programa fonte e, a informação de nome simbólico ser gerada quando o referido primeiro programa de computador é compilado, a referida informação de nome simbólico associando os nomes simbólicos no referido programa fonte com endereços com endereços no referido primeiro programa de computador e, por o referido compreender adicionalmente o referenciar a referida informação de nome simbólico para identificar um nome simbólico associado com o referido erro e, relatar o referido nome simbólico conjuntamente com o referido erro.
  13. 18a. - Método de acordo com a reivindicação 15, caracterizado por as referidas guardas no referido mapa de fronteira de bit” de instrução indicam também instruções no referido segundo programa de computador que tem armadilhas activadas e, as referidas instruções no referido segundo programa de cone tem armadilhas activadas não serem contadas durante a pesquisa.
    193. - Sistema de computador digital para relatar a ocorrência de um erro durante a execução de um segundo programa de computador o qual é uma tradução de um primeiro computador, tendo o referido primeiro programa de computador sido gerado por um programa fonte de compilação, incluindo o primeiro programa de computador instruções de um primeiro conjunto de instruções baseado numa primeira arquitectura de instrução, tendo cada uma das referidas instruções no referido primeiro programa de computador um endereço respectivo, incluindo o referido segundo programa de computador instruções de um segundo conjunto de instruções baseado numa segunda arquitectura de instrução, tendo cada das referidas instrução no referido segundo programa de computador um endereço respectivo, algumas das referidas instruções no referido primeiro programa de computador tendo cada uma sido traduzida numa respectiva pluralidade das referidas instruções no referido segundo programa de computador, tendo o referido erro sido causado pela execução de uma das referidas instruções no referido programa de computador, caracterizado por compreender, em combinação:
    (a) meios para abortar a execução do referido segundo programa de computador quando ocorre o referido erro;
    (b) meios para determinar um primeiro endereço de uma referida das referidas instruções no referido segundo programa de computador;
    (c) meios para referenciar uma tabela de, tradução de endereços para determinar do referido primeiro endereço um segundo endereço de uma das referidas instruções no referido primeiro programa de computador do qual uma referida das referidas instruções no referido segundo programa de computador por traduzida;
    (d) meios para referenciar a informação de remontar para identificar uma porção do código fonte no referido programa fonte do qual uma referida das referidas instruções no referido primeiro programa de computador foi compilada; e
    I (e) meios para relatar que o referido erro ocorre e, indicando a referida porção de código fonte no referido programa fonte de onde uma referida das referidas instruções no referido primeiro programa de computador foi compilado.
  14. 20â. - Sistema de computador digital de acordo com a reivindicação 18, caracterizado por compreender adicionalmente meias para referenciar informação de nome simbólico para identificar um nome simbólico associado com o referido erro e, relatando o referido nome simbólico conjuntamente com o referido erro.
    212. - Sistema de computador digital de acordo com a reivindicação 18, caracterizado por a referida tabela de correlação de endereços incluir entradas tendo cada uma um endereço de uma instrução respectiva no referido primeiro programa de computador e um endereço de uma primeira instrução num conjunto de instruções no referido segundo programa de computador, tendo o referido conjunto de instruções no referido segundo programa de computador sido traduzido da respectiva instrução no referido primeiro programa de computador;
    nem todos os endereços das instruções programa de computador serem incluídos em tabela de correlação de endereços um mapa de instrução ser gerado durante a tradução do referido primeiro programa de computador para obter um segundo programa de computador, indicando o referido mapa de fronteira de bit de instrução, instruções no referido segundo programa que inicia conjuntos de instruções traduzidas das respectivas instruções no referido primeiro programa; e por os referidos meios para referenciar a referida tabela de tradução de endereços incluírem adicionalmente meios para pesquisar o referido mapa de fronteira de bit de instrução entre uma primeira posição no referido mapa de bit correspondendo ao referido primeiro endereço e uma segunda posição no referido mapa de bit correspondendo a um endereço no referido segundo programa de computador o qual é uma entrada na referida tabela de correlação de endereços, meios para contar indicações no referido mapa de bit entre o referida primeira posição e a referida segunda posição para obter uma contagem de instruções, meios para ler da referida entrada na referida tabela de correlação de endereços um terceiro endereço no referido primeiro programa de computador e meios para determinar o referido segundo endereço do referido terceiro endereço e a referida contagem de instruções.
  15. 22^. - sistema de computador digital de acordo com a reivindicação 21, caracterizado por os referidos meios para determinar o referido segundo endereço do referido terceiro endereço incluírem meios para analisar um número seleccionado de instruções começando do referido terceiro endereço, sendo o referido número de instruções seleccionadas, seleccionadas com base na referida contagem de instruções.
    ·>» ' ,·<
  16. 23a. - Sistema de computador digital de' acordo com a reivindicação 21, caracterizado por o referido mapa de fronteira de ”bit de instruções incluir indicações de instruções no referido segundo programa de computador que tem armadilhas activadas e, os referidos meios para contar não contarem indicações de instruções no referido segundo programa de computador que tem armadilhas incluídas.
PT100206A 1991-03-07 1992-03-06 Metodo para operar um computador digital e sistema de computador digital PT100206B (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/666,025 US5307504A (en) 1991-03-07 1991-03-07 System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US07/700,770 US5432795A (en) 1991-03-07 1991-05-15 System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program

Publications (2)

Publication Number Publication Date
PT100206A PT100206A (pt) 1994-05-31
PT100206B true PT100206B (pt) 1998-10-30

Family

ID=27099354

Family Applications (1)

Application Number Title Priority Date Filing Date
PT100206A PT100206B (pt) 1991-03-07 1992-03-06 Metodo para operar um computador digital e sistema de computador digital

Country Status (15)

Country Link
US (1) US5432795A (pt)
EP (2) EP0528024B1 (pt)
JP (1) JPH0734178B2 (pt)
KR (1) KR950006619B1 (pt)
AT (1) ATE155905T1 (pt)
AU (1) AU647263B2 (pt)
CA (1) CA2082064C (pt)
DE (1) DE69221041T2 (pt)
FI (1) FI102219B1 (pt)
IE (1) IE920742A1 (pt)
IL (1) IL100992A (pt)
MX (1) MX9200938A (pt)
NO (1) NO304459B1 (pt)
PT (1) PT100206B (pt)
WO (1) WO1992015948A1 (pt)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673390A (en) * 1992-09-03 1997-09-30 International Business Machines Corporation Method and system for displaying error messages
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
US5974568A (en) * 1995-11-17 1999-10-26 Mci Communications Corporation Hierarchical error reporting system
US6000028A (en) * 1996-01-29 1999-12-07 Digital Equipment Corporation Means and apparatus for maintaining condition codes in an unevaluated state
US6226789B1 (en) 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US6535903B2 (en) 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US5930509A (en) * 1996-01-29 1999-07-27 Digital Equipment Corporation Method and apparatus for performing binary translation
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5802373A (en) * 1996-01-29 1998-09-01 Digital Equipment Corporation Method for providing a pipeline interpreter for a variable length instruction set
US6330691B1 (en) * 1996-02-23 2001-12-11 Institute For The Development Of Emerging Architectures Llc Use of dynamic translation to provide breakpoints in non-writeable object code
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6067413A (en) * 1996-06-13 2000-05-23 Instantations, Inc. Data representation for mixed-language program development
US5754860A (en) * 1996-07-23 1998-05-19 Digital Equipment Corporation Method and apparatus for software testing using a differential testing technique to test compilers
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US6721941B1 (en) 1996-08-27 2004-04-13 Compuware Corporation Collection of timing and coverage data through a debugging interface
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US5822511A (en) * 1996-09-03 1998-10-13 Motorola, Inc. Smart compare tool and method
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
US5812759A (en) * 1996-11-08 1998-09-22 Allen Bradley Company, Inc. Fault handling with loaded functions
US6071316A (en) * 1997-09-29 2000-06-06 Honeywell Inc. Automated validation and verification of computer software
EP1359501A3 (en) * 1997-10-02 2007-11-21 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6237137B1 (en) * 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
JP3110367B2 (ja) * 1998-01-30 2000-11-20 日本電気アイシーマイコンシステム株式会社 ソースコンバータの処理方法及びソースコンバータ処理プログラムを記録したコンピュータ読み取り可能な記録媒体
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
JP3658514B2 (ja) * 1999-01-28 2005-06-08 富士通株式会社 帳票プログラム作成装置
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6698011B1 (en) * 1999-01-29 2004-02-24 Intel Corporation Isolation of program translation failures
AU3889200A (en) * 1999-03-15 2000-10-04 Smartsan Systems, Inc. System and method of event management and early fault detection
GB2348304B (en) * 1999-03-24 2003-07-09 Ibm Optimising Device Driver Debug Tracing
US6381737B1 (en) * 1999-04-23 2002-04-30 Sun Microsystems, Inc. Automatic adapter/stub generator
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6427232B1 (en) * 1999-06-10 2002-07-30 International Business Machines Corporation Functional debugger for debugging software programs
US6393606B1 (en) * 1999-06-25 2002-05-21 Agilent Technologies, Inc. Inverse assembler
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6553480B1 (en) * 1999-11-05 2003-04-22 International Business Machines Corporation System and method for managing the execution of instruction groups having multiple executable instructions
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US6463578B1 (en) * 1999-11-23 2002-10-08 International Business Machines Corporation Systems, methods and computer program products for debugging java server page files using compiled java class file modifications
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
GB2366399B (en) * 2000-08-26 2005-02-16 Ibm Recognition of command related items in object code
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
US7251811B2 (en) * 2002-01-02 2007-07-31 Intel Corporation Controlling compatibility levels of binary translations between instruction set architectures
US7296257B1 (en) * 2002-08-01 2007-11-13 Tymesys Corporation Techniques for exception handling by rewriting dispatch table elements
US7320121B2 (en) * 2002-08-01 2008-01-15 Sas Institute Inc. Computer-implemented system and method for generating embedded code to add functionality to a user application
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US20050028146A1 (en) * 2003-08-01 2005-02-03 Quick Shawn G. Systems and methods for software and firmware testing using checkpoint signatures
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7496897B1 (en) 2004-03-17 2009-02-24 Timesys Corporation Multiple code sets for multiple execution contexts
US7546488B2 (en) * 2004-07-02 2009-06-09 Seagate Technology Llc Event logging and analysis in a software system
GB2425372B (en) * 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
WO2006111705A2 (en) * 2005-04-20 2006-10-26 Transitive Limited Method and apparatus for precise handling of exceptions during program code conversion
US7716642B1 (en) 2005-05-03 2010-05-11 Emc Corporation Techniques for detecting coding incompatibilities
US7596720B2 (en) * 2005-09-27 2009-09-29 Microsoft Corporation Application health checks
US7676806B2 (en) * 2005-09-27 2010-03-09 Microsoft Corporation Deployment, maintenance and configuration of complex hardware and software systems
US7603669B2 (en) * 2005-09-27 2009-10-13 Microsoft Corporation Upgrade and downgrade of data resource components
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US20090271663A1 (en) * 2008-04-24 2009-10-29 Vining Robert G Providing detailed program state information for error analysis
JP5050019B2 (ja) * 2009-08-26 2012-10-17 株式会社東芝 ソースコード解析システム
US10216254B1 (en) * 2016-06-29 2019-02-26 Altera Corporation Methods and apparatus for selectively extracting and loading register states
US11809899B2 (en) 2019-06-28 2023-11-07 Intel Corporation Methods and apparatus for accelerating virtual machine migration
CN110765047B (zh) * 2019-10-24 2023-09-26 南方科技大学 基于指令集的数字信号控制系统、fpga模块及方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4500952A (en) * 1980-05-23 1985-02-19 International Business Machines Corporation Mechanism for control of address translation by a program using a plurality of translation tables
JPS61213935A (ja) * 1985-03-18 1986-09-22 Omron Tateisi Electronics Co 高級言語プログラムのデバック装置及びそのステップ方式
JPS6226535A (ja) * 1985-07-22 1987-02-04 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション プログラム内の変換テ−ブルの修正方法
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
JPS62214443A (ja) * 1986-03-17 1987-09-21 Fanuc Ltd エミユレ−シヨン実行方法
US5133072A (en) * 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
EP0310600B1 (en) * 1987-03-24 1994-01-19 Insignia Solutions Limited Arrangement for software emulation
US4855905A (en) * 1987-04-29 1989-08-08 International Business Machines Corporation Multiprotocol I/O communications controller unit including emulated I/O controllers and tables translation of common commands and device addresses
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
JPH04500132A (ja) * 1988-07-29 1992-01-09 ハンター・システムズ・ソフトウェア・インク 2進符号の機械語のプログラムを別の2進符号の機械語に翻訳する機械処理
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems

Also Published As

Publication number Publication date
IL100992A (en) 1995-12-31
FI102219B (fi) 1998-10-30
KR950006619B1 (ko) 1995-06-19
MX9200938A (es) 1993-03-01
EP0528024B1 (en) 1997-07-23
US5432795A (en) 1995-07-11
JPH05505692A (ja) 1993-08-19
NO924259D0 (no) 1992-11-05
ATE155905T1 (de) 1997-08-15
AU1570592A (en) 1992-10-06
FI925056A (fi) 1992-11-06
CA2082064C (en) 1996-12-31
WO1992015948A1 (en) 1992-09-17
IE920742A1 (en) 1992-09-09
NO304459B1 (no) 1998-12-14
FI102219B1 (fi) 1998-10-30
DE69221041T2 (de) 1998-01-29
NO924259L (no) 1993-01-06
EP0528024A1 (en) 1993-02-24
AU647263B2 (en) 1994-03-17
PT100206A (pt) 1994-05-31
EP0772122A2 (en) 1997-05-07
JPH0734178B2 (ja) 1995-04-12
CA2082064A1 (en) 1992-09-08
FI925056A0 (fi) 1992-11-06
DE69221041D1 (de) 1997-08-28
EP0772122A3 (en) 1997-05-14

Similar Documents

Publication Publication Date Title
PT100206B (pt) Metodo para operar um computador digital e sistema de computador digital
US5307504A (en) System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5636366A (en) System and method for preserving instruction state-atomicity for translated program
Silberman et al. An architectural framework for supporting heterogeneous instruction-set architectures
West et al. Automatic incremental state saving
US10354069B2 (en) Automated reverse engineering
US20070250820A1 (en) Instruction level execution analysis for debugging software
US20120131559A1 (en) Automatic Program Partition For Targeted Replay
PL181901B1 (pl) Sposób i urzadzenie do obslugi instrukcji spekulatywnychPierwszenstwo: PL PL PL
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
Silberman et al. An architectural framework for migration from CISC to higher performance platforms
Akgul et al. Assembly instruction level reverse execution for debugging
Cui et al. Flowwalker: a fast and precise off-line taint analysis framework
KR100522468B1 (ko) 타겟 프로세서의 상태를 일시적으로 홀딩하는 장치를 갖는 호스트 마이크로프로세서
Bowie Applications of graph theory in computer systems
JPH0738159B2 (ja) コードトランスレータのコンピュータコードを処理する方法および装置
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
Barbacci et al. Evaluation of the CFA test programs via formal computer descriptions
Padaryan et al. On the Representation of Results of Binary Code Reverse Engineering
Puder et al. Cross-compiling Java to JavaScript via tool-chaining
Sawaya Thread Scheduling for Hardware Stress Testing on Bare-metal Devices
Charlton et al. Program monitoring and analysis: Software structures and architectural support
JP2658982B2 (ja) 特定命令実行検出方式
Getz Wasm-R3: creating executable benchmarks of WebAssembly binaries via record-reduce-replay
Kleckner Optimization of naïve dynamic binary instrumentation Tools

Legal Events

Date Code Title Description
BB1A Laying open of patent application

Effective date: 19931018

FG3A Patent granted, date of granting

Effective date: 19980710

MM3A Annulment or lapse

Free format text: LAPSE DUE TO NON-PAYMENT OF FEES

Effective date: 20010131