ARQUITECTURA PARA GENERAR REPRESENTACIONES INTERMEDIAS PARA LA CONSERVACION DE CODIGOS DE PROGRAMAS.

Un método para generar una representación intermedia durante la traducción de código sujeto (10) a código de objetivo (20),

que comprende las etapas de:

descodificar instrucciones (310, 312) en el código sujeto (10);

generar una representación intermedia (204, 210) de las instrucciones descodificadas, de tal manera que los nodos de IR (60, 70) de la representación intermedia (204, 210) son representaciones abstractas de las expresiones, cálculos y operaciones llevados a cabo por las instrucciones (310, 312) del código sujeto (10);

caracterizado por:

determinar al menos un tipo de nodos de IR (60, 70) de entre una pluralidad de tipos posibles de nodos de IR (60, 70) que se han de generar en la representación intermedia (204, 210) para cada instrucción respectiva (310, 312) en el código sujeto descodificado (10);

de manera que la pluralidad de tipos posibles de nodos de IR (60, 70) incluye al menos nodos de base (60) y nodos complejos (70);

de tal modo que los nodos de base (60) representan la semántica más básica del código sujeto (10), de forma que la semántica de los nodos de base (60) no puede ser descompuesta en otros nodos que representen semánticas más simples; y

de tal manera que los nodos complejos (70) proporcionan una representación más compacta de la semántica de instrucciones complejas en el código de programa, que la de las representaciones de los nodos de base

Tipo: Patente Internacional (Tratado de Cooperación de Patentes). Resumen de patente/invención. Número de Solicitud: PCT/GB2004/001824.

Solicitante: INTERNATIONAL BUSINESS MACHINES CORPORATION.

Nacionalidad solicitante: Estados Unidos de América.

Dirección: ONE NEW ORCHARD ROAD,ARMONK, NY 10504.

Inventor/es: OWEN,DANIEL, ANDREWS,JONATHAN JAY, HOWSON,MILES PHILIP, HAIKEN,DAVID.

Fecha de Publicación: .

Fecha Concesión Europea: 21 de Abril de 2010.

Clasificación Internacional de Patentes:

  • G06F9/45E9

Clasificación PCT:

  • G06F9/45

Clasificación antigua:

  • G06F9/40
ARQUITECTURA PARA GENERAR REPRESENTACIONES INTERMEDIAS PARA LA CONSERVACION DE CODIGOS DE PROGRAMAS.

Fragmento de la descripción:

Arquitectura para generar representaciones intermedias para la conversión de códigos de programas.

El objeto de la invención se refiere generalmente al campo de las computadoras y de la programación o software informático, y, más particularmente, a métodos y aparatos de conversión de código de programa de utilidad, por ejemplo, en traductores de código, emuladores y aceleradores.

En el mercado de CPU [unidades centrales de procesamiento -"Central Processing Units"] incorporadas o embebidas y no embebidas, pueden encontrarse Arquitecturas de Conjuntos de Instrucciones (ISAs -"Instruction Set Architectures") predominantes para las que existen grandes cuerpos de software que pueden ser "Acelerados" en cuanto a su rendimiento o "Traducidos" a una miríada de procesadores capaces que pueden presentar mejores beneficios de coste / rendimiento, siempre y cuando puedan acceder de una forma transparente a la programación o software relevante. También pueden encontrarse arquitecturas de CPU dominantes que están ligadas en el tiempo a su ISA y no pueden evolucionar en rendimiento o en alcance o penetración en el mercado, y que se beneficiarían de la arquitectura conjunta de "CPU Sintética" ("Synthetic CPU").

Es a menudo deseable correr o hacer funcionar código de programa escrito para un procesador de computadora de un primer tipo (un procesador "Sujeto") en un procesador de un segundo tipo (un procesador de "objetivo"). Aquí, se emplea un emulador o traductor para llevar a cabo la traducción del código de programa de tal manera que el programa sujeto sea capaz de correr o ejecutarse en el procesador de objetivo. El emulador proporciona un entorno virtual, como si el programa sujeto estuviese ejecutándose de forma nativa u originaria en un procesador sujeto, mediante la emulación del procesador sujeto.

En el pasado, el código sujeto era convertido en una representación intermedia de un programa informático en el curso de la ejecución individual de la traducción, utilizando los denominados nodos de base, tal y como se describe en el documento WO 00/22521, titulado "Conversión de código de programa" ("Program Code Conversion"), en conexión con las Figuras 1 a 5 de esta Solicitud. La representación intermedia "IR" ("Intermediate Representation") es una expresión ampliamente utilizada en la industria informática en referencia a formas de lenguaje informático abstractas en las que se puede expresar un programa, pero que no son específicas de, ni están destinadas a llevarse a cabo directamente en, ningún procesador particular. Métodos y aparatos de conversión de código de programa que facilitan dichas capacidades de aceleración, traducción y arquitectura conjunta utilizando representaciones intermedias son el objeto, por ejemplo, de la publicación anteriormente mencionada WO 00/22521.

De acuerdo con la presente invención, se proporciona un aparato y un método según se establece en las reivindicaciones que se acompañan. Características preferidas de la invención se pondrán de manifiesto de forma evidente por las reivindicaciones dependientes y la descripción que sigue.

Lo que sigue es un sumario de diversos aspectos y ventajas constatables de acuerdo con diversas realizaciones de la arquitectura mejorada para la conversión de código de programa de acuerdo con la presente invención. Éste se aporta a modo de introducción para ayudar a los expertos de la técnica a asimilar más rápidamente la exposición detallada de la invención que sigue, y no se pretende en ningún modo que limite el ámbito de las reivindicaciones que se añaden al mismo.

Las diversas realizaciones que se describen más adelante se refieren a estructuras o arquitecturas mejoradas para un aparato y un método asociado de conversión de código de programa, destinados a convertir código sujeto ejecutable existente en un entorno informático sujeto en código pretendido o de objetivo, susceptible de ser ejecutado en un entorno informático de objetivo. El aparato de conversión de código de programa crea una representación intermedia ("IR" -"Intermediate Representation") del código sujeto, que puede ser entonces optimizada para el entorno informático de objetivo con el fin de generar de forma más eficiente el código de objetivo. Dependiendo de las arquitecturas particulares de los entornos informáticos sujeto y de objetivo implicados en la conversión, el aparato de conversión de código de programa de una realización determina cuál de los siguientes tipos de nodos de IR se ha de generar en la representación intermedia: nodos de base, nodos complejos, nodos polimórficos y nodos específicos de la arquitectura. La arquitectura de conversión de código de programa generará por defecto nodos de base cuando cree la representación intermedia, a menos que se determine que otro de los tipos de nodos es más aplicable a la conversión particular que se está llevando a cabo.

Los nodos de base proporcionan un conjunto mínimo de nodos (esto es, expresiones abstractas) necesarios para representar la semántica de cualquier arquitectura sujeto que ejecuta o hace funcionar el código sujeto, de tal manera que los nodos de base proporcionan una capacidad funcional a modo de RISC (Computadora de Conjunto de Instrucciones Reducido -"Reduced Instruction Set Computer"). Los nodos complejos son nodos genéricos que representan la semántica a modo de CISC ("Computadora de Conjunto de Instrucciones Complejo" -"Complex Instruction Set Computer") de una arquitectura sujeto que ejecuta el código sujeto en una representación más compacta que los nodos de base. Si bien todos los nodos complejos pueden descomponerse en representaciones de nodos de base con la misma semántica, los nodos complejos presentan la semántica de las instrucciones complejas dentro de un único nodo de IR con el fin de mejorar el rendimiento del traductor. Los nodos complejos esencialmente aumentan el conjunto de nodos de base para las instrucciones a modo de CISC contenidas en el código sujeto. Los nodos de base y los nodos complejos se utilizan, ambos, genéricamente en un amplio abanico de estructuras o arquitecturas sujeto y de objetivo posibles, permitiendo, de esta forma, llevar a cabo optimizaciones genéricas en los árboles de IR correspondientes compuestos de nodos de base y nodos complejos.

El aparato de conversión de código de programa se sirve de nodos polimórficos en la representación intermedia cuando las características del entorno informático de objetivo hacen que la semántica de la instrucción sujeto concreta se pierda si se lleva a cabo como nodo de IR genérico. Los nodos polimórficos contienen un puntero apuntando a una función del entorno informático de objetivo específica de una instrucción sujeto particular contenida en el código de fuente. El aparato de conversión de código de programa utiliza, adicionalmente, nodos específicos de la arquitectura para proporcionar componentes de conversión especializados de objetivo para realizar funciones de generación de código especializadas para ciertos entornos informáticos de objetivo.

Los métodos de generación de IR mejorados que se describen aquí, en lo que sigue, permiten que el aparato de conversión de código de programa sea susceptible de configurarse para cualquier emparejamiento de arquitecturas de procesador sujeto y de objetivo, al tiempo que mantienen un grado óptimo de rendimiento y maximizan la velocidad de traducción.

Para una mejor comprensión de la invención y con el fin de mostrar el modo como pueden llevarse a efecto las realizaciones de la misma, se hará referencia a continuación, a modo de ejemplo, a los dibujos diagramáticos o esquemáticos que se acompañan, en los cuales:

la Figura 1 muestra un entorno informático a modo de ejemplo, que incluye entornos informáticos sujeto y de objetivo;

la Figura 2 muestra un aparato preferido de conversión de código de programa;

la Figura 3 es un diagrama esquemático de un entorno informático ilustrativo que expone la traducción de código sujeto a código de código de objetivo;

la Figura 4 es una ilustración esquemática de varias representaciones intermedias realizadas por un aparato de conversión de código de programa de acuerdo con una realización preferida de la presente invención;

la Figura 5 es un diagrama esquemático detallado de un aparato preferido de conversión de código de programa;

la Figura 6 muestra árboles de IR proporcionados a modo de ejemplo que utilizan nodos de base y nodos complejos;

la Figura 7 es un diagrama esquemático que ilustra un ejemplo de...

 


Reivindicaciones:

1. Un método para generar una representación intermedia durante la traducción de código sujeto (10) a código de objetivo (20), que comprende las etapas de:

descodificar instrucciones (310, 312) en el código sujeto (10);

generar una representación intermedia (204, 210) de las instrucciones descodificadas, de tal manera que los nodos de IR (60, 70) de la representación intermedia (204, 210) son representaciones abstractas de las expresiones, cálculos y operaciones llevados a cabo por las instrucciones (310, 312) del código sujeto (10);

caracterizado por:

determinar al menos un tipo de nodos de IR (60, 70) de entre una pluralidad de tipos posibles de nodos de IR (60, 70) que se han de generar en la representación intermedia (204, 210) para cada instrucción respectiva (310, 312) en el código sujeto descodificado (10);

de manera que la pluralidad de tipos posibles de nodos de IR (60, 70) incluye al menos nodos de base (60) y nodos complejos (70);

de tal modo que los nodos de base (60) representan la semántica más básica del código sujeto (10), de forma que la semántica de los nodos de base (60) no puede ser descompuesta en otros nodos que representen semánticas más simples; y

de tal manera que los nodos complejos (70) proporcionan una representación más compacta de la semántica de instrucciones complejas en el código de programa, que la de las representaciones de los nodos de base.

2. El método de acuerdo con la reivindicación 1, en el cual los nodos de base (60) son genéricos a través de una pluralidad de estructuras o arquitecturas sujeto posibles (12, 14).

3. El método de acuerdo con la reivindicación 1 ó la reivindicación 2, en el cual los nodos complejos (70) representan instrucciones de tipo inmediato en las que un valor de operando constante es codificado en la propia instrucción de tipo inmediato, contenida en un campo inmediato (72).

4. El método de acuerdo con la reivindicación 1, 2 ó 3, en el cual un nodo complejo (70) puede ser descompuesto en una pluralidad de nodos de base (60) para representar la misma semántica de una instrucción en el código sujeto descodificado (10).

5. El método de acuerdo con cualquiera de las reivindicaciones precedentes, en el cual el código sujeto (10) está diseñado para ser llevado a cabo o ejecutado por una arquitectura sujeto (10, 14), y el método comprende, adicionalmente, la etapa de generar nodos complejos (70) únicamente para las características configurables correspondientemente en la arquitectura sujeto (10, 14).

6. El método de acuerdo con cualquiera de las reivindicaciones precedentes, en el cual la pluralidad de tipos posibles de nodos de IR (60, 70) incluye, adicionalmente, nodos polimórficos (212).

7. El método de acuerdo con la reivindicación 6, en el cual el código sujeto (10) está diseñado para su ejecución en una arquitectura sujeto (10, 14) y es traducido dinámicamente a código de objetivo (20) para su ejecución en una arquitectura de objetivo (22, 24), de manera que dicho método comprende, adicionalmente:

generar la representación intermedia (204, 210) de manera que incluya los nodos polimórficos (212), de tal modo que los nodos polimórficos (212) contienen un puntero de función que apunta a una función de la arquitectura de objetivo (22, 24) específica de una instrucción particular en el código sujeto (10).

8. El método de acuerdo con la reivindicación 7, de tal modo que dicho método comprende, adicionalmente, generar nodos polimórficos (212) cuando las características de la arquitectura de objetivo (22, 24) provocarían que se perdiera la semántica de una instrucción sujeto particular si se realizase como nodos de base (60).

9. El método de acuerdo con la reivindicación 7 ó la reivindicación 8, en el cual cada nodo polimórfico (212) es específico de una combinación de una instrucción particular en el código sujeto (10) y una función de la arquitectura de objetivo (22, 24).

10. El método de acuerdo con la reivindicación 7, 8 ó 9, en el cual dicha etapa de determinar el tipo de nodos de IR (60, 70) comprende, adicionalmente, identificar una instrucción en el código sujeto (10) que corresponde a una instrucción de una lista de instrucciones polimórficas que se han de realizar como nodos polimórficos (212); y

cuando una instrucción en el código sujeto (10) corresponde a una instrucción de la lista de instrucciones polimórficas, dicha etapa de generación comprende generar nodos polimórficos (212) únicamente para las instrucciones que corresponden a la lista de instrucciones polimórficas.

11. El método de acuerdo con cualquiera de las reivindicaciones precedentes, en el cual la pluralidad de tipos posibles de nodos de IR (60, 70) incluye, adicionalmente, nodos (801) específicos de la arquitectura.

12. El método de acuerdo con la reivindicación 11, en el cual el código sujeto (10) se ha diseñado para su ejecución en una arquitectura sujeto (10, 14) y es traducido dinámicamente a código de objetivo (20) para su ejecución en una arquitectura de objetivo (22, 24), de tal modo que dicho método comprende, adicionalmente:

generar la representación intermedia (204, 210) de manera que incluya nodos (801) específicos de la arquitectura, que son específicos de una combinación particular de una arquitectura sujeto (10, 14) y una arquitectura de objetivo (22, 24).

13. El método de acuerdo con la reivindicación 12, en el cual la etapa de generación de la representación intermedia (204, 210) comprende, adicionalmente:

representar, inicialmente, todas las instrucciones en el código sujeto (10) como nodos específicos de la arquitectura sujeto, de tal manera que cada nodo (904) específico de la arquitectura sujeto corresponde a una instrucción respectiva en el código sujeto (10);

determinar si una instrucción en el código sujeto (10) es una en la que se ha de proporcionar una función de conversión especializada para la arquitectura de objetivo, que convierte nodos específicos (904) de la arquitectura sujeto en nodos específicos (911) de la arquitectura de objetivo para las instrucciones para las que se ha determinado que proporcionan una función de conversión especializada para la arquitectura de objetivo; y

generar nodos de base (60) a partir de los restantes nodos específicos (904) de la arquitectura sujeto que no se han identificado como suministradores de una función de generación de código especializada para la arquitectura de objetivo.

14. El método de acuerdo con la reivindicación 13, que comprende, adicionalmente, generar código de objetivo correspondiente (20) a partir de los nodos específicos (911) de la arquitectura de objetivo, que está especializado para la arquitectura de objetivo (22, 24).

15. El método de acuerdo con la reivindicación 13 ó la reivindicación 14, que comprende, adicionalmente, generar código de objetivo correspondiente (20) a partir de los nodos de base (60), que no está especializado para la arquitectura de objetivo (22, 24).

16. El método de acuerdo con la reivindicación 7, en el cual dichos nodos polimórficos generados (212) especifican los registros que han de ser asignados durante la generación de código de objetivo (20).

17. El método de acuerdo con la reivindicación 7, en el cual dichos nodos polimórficos generados (212) se utilizan en optimizaciones genéricas de núcleo operativo o kernel al inferir información a partir del puntero de función en el nodo polimórfico (212), que puede ser, de otro modo, indeterminable a partir del nodo polimórfico (212).

18. El método de acuerdo con la reivindicación 10, en el cual, cuando una instrucción sujeto corresponde a una instrucción de la lista de instrucciones polimórficas, dicha etapa de generación de representación intermedia genera, bien nodos polimórficos (212) o bien nodos de base (60) para las instrucciones sujeto que corresponden a la lista de instrucciones polimórficas.

19. Un medio de grabación legible por computadora y que contiene código de programa susceptible de llevarse a cabo o ejecutarse por una computadora para realizar el método de acuerdo con cualquiera de las reivindicaciones precedentes.

20. Un medio de almacenamiento legible por computadora y que tiene programación o software traductor residente en el mismo, en la forma de código legible por computadora y susceptible de ser ejecutado por una computadora para llevar a cabo las siguientes etapas durante la traducción de código de programa sujeto (10) a código de programa de objetivo (20):

descodificar instrucciones (310, 312) en el código de programa sujeto (10);

generar una representación intermedia (204, 210) de las instrucciones en código de programa sujeto descodificado (10), de tal manera que los nodos de IR (60, 70) de la representación intermedia (204, 210) son representaciones abstractas de las expresiones, cálculos y operaciones llevados a cabo por el código de programa; y

generar código de programa de objetivo (20) utilizando la representación intermedia (204, 210);

caracterizado por:

determinar al menos un tipo de nodo de IR de entre una pluralidad de tipos posibles de nodos de IR (60, 70) que se ha de generar en la representación intermedia (204, 210) para cada instrucción respectiva en el código de programa sujeto descodificado (10);

en el cual la pluralidad de tipos posibles de nodos de IR (60, 70) incluye nodos de base (60) y nodos complejos (70);

de tal forma que los nodos de base (60) representan la semántica más básica de cualquier estructura o arquitectura sujeto (10, 14) que corre o hace funcionar el código de programa, de modo que la semántica de los nodos de base (60) no puede ser descompuesta en otros nodos que representan semánticas más simples; y

de tal manera que los nodos complejos (70) proporcionan una representación más compleja de la semántica de instrucciones complejas en el código de programa que la de las representaciones de nodo de base.

21. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 20, en el cual los nodos de base (60) son genéricos a través de una pluralidad de arquitecturas sujeto posibles (12, 14).

22. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 20 ó la reivindicación 21, en el cual los nodos complejos (70) representan instrucciones de tipo inmediato en las que un valor de operando constante es codificado en la propia instrucción de tipo inmediato, contenida en un campo inmediato (72).

23. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 20, 21 ó 22, en el cual un nodo complejo (70) puede ser descompuesto en una pluralidad de nodos de base (60) para representar la misma semántica de una instrucción en el código de programa descodificado.

24. El medio de almacenamiento legible por computadora de acuerdo con cualquiera de las reivindicaciones 20 a 23, en el cual el código de programa sujeto (10) está diseñado para ser llevado a cabo o ejecutado por una arquitectura sujeto (10, 14), y el método comprende, adicionalmente, la etapa de generar nodos complejos (70) únicamente para las características configurables correspondientemente en la arquitectura sujeto (10, 14).

25. El medio de almacenamiento legible por computadora de acuerdo con cualquiera de las reivindicaciones 20 a 24, en el cual la pluralidad de tipos posibles de nodos de IR (60, 70) incluye, adicionalmente, nodos polimórficos (212).

26. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 25, en el cual el código de programa sujeto (10) está diseñado para su ejecución en una arquitectura sujeto (10, 14) y es traducido dinámicamente a código de objetivo (20) para su ejecución en una arquitectura de objetivo (22, 24), de tal manera que dicho software traductor contiene, adicionalmente, código legible por computadora y ejecutable por una computadora par llevar a cabo las siguientes etapas:

generar la representación intermedia (204, 210) de manera que incluya los nodos polimórficos (212), de tal modo que los nodos polimórficos (212) contienen un puntero de función que apunta a una función de la arquitectura de objetivo (22, 24) específica de una instrucción particular en el código sujeto (10).

27. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 26, de tal modo que dicho software traductor contiene, adicionalmente, código legible por computadora y ejecutable por una computadora para generar nodos polimórficos (212) cuando las características de la arquitectura de objetivo (22, 24) provocarían que se perdiera la semántica de una instrucción sujeto particular si se realizase como nodos de base (60).

28. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 26 ó la reivindicación 27, en el cual cada nodo polimórfico (212) es específico de una combinación de una instrucción particular en el código sujeto (10) y una función de la arquitectura de objetivo (22, 24).

29. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 26, 27 ó 28, en el cual dicho código legible por computadora y ejecutable por una computadora para determinar el tipo de nodos de IR (60, 70), adicionalmente:

identifica una instrucción en el código sujeto (10) que corresponde a una instrucción de una lista de instrucciones polimórficas que se han de realizar como nodos polimórficos (212); y

cuando una instrucción sujeto corresponde a una instrucción de la lista de instrucciones polimórficas, genera nodos polimórficos (212) únicamente para las instrucciones sujeto que corresponden a las que se encuentran en la lista de instrucciones polimórficas.

30. El medio de almacenamiento legible por computadora de acuerdo con cualquiera de las reivindicaciones 20 a 29, en el cual la pluralidad de tipos posibles de nodos de IR (60, 70) incluye, adicionalmente, nodos (801) específicos de la arquitectura.

31. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 30, en el cual el código de programa sujeto (10) se ha diseñado para su ejecución en una arquitectura sujeto (10, 14) y es traducido dinámicamente a código de objetivo (20) para su ejecución en una arquitectura de objetivo (22, 24), de tal modo que dicho software traductor contiene, adicionalmente, código legible por computadora y ejecutable por una computadora para llevar a cabo las siguientes etapas:

generar la representación intermedia (204, 210) de manera que incluya nodos (801) específicos de la arquitectura, que son específicos de una combinación particular de una arquitectura sujeto (10, 14) y una arquitectura de objetivo (22, 24).

32. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 31, de tal manera que dicho software traductor contiene, adicionalmente, código legible por computadora y ejecutable por una computadora para llevar a cabo las siguientes etapas:

representar, inicialmente, todas las instrucciones en el código sujeto (10) como nodos específicos de la arquitectura sujeto, de tal manera que cada nodo (904) específico de la arquitectura sujeto corresponde a una instrucción respectiva en el código sujeto (10);

determinar si una instrucción en el código sujeto (10) es una en la que se ha de proporcionar una función de conversión especializada para la arquitectura de objetivo, que convierte nodos específicos (904) de la arquitectura sujeto en nodos específicos (911) de la arquitectura de objetivo para las instrucciones para las que se ha determinado que proporcionan una función de conversión especializada para la arquitectura de objetivo; y

generar nodos de base (60) a partir de los restantes nodos específicos (904) de la arquitectura sujeto que no se han identificado como suministradores de una función de generación de código especializada para la arquitectura de objetivo.

33. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 32, de tal manera que dicho software traductor contiene, adicionalmente, código legible por computadora y ejecutable por una computadora para generar código de objetivo correspondiente (20) a partir de los nodos específicos (911) de la arquitectura de objetivo, que está especializado para la arquitectura de objetivo (22, 24).

34. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 31, 32 ó 33, de tal manera que dicho software traductor contiene, adicionalmente, código legible por computadora y ejecutable por una computadora para generar código de objetivo correspondiente (20) a partir de los nodos de base (60), que no está especializado para la arquitectura de objetivo (22, 24).

35. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 26, en el cual dichos nodos polimórficos generados (212) especifican los registros que se han de asignar durante la generación de código de objetivo (20).

36. El medio de almacenamiento legible por computadora de acuerdo con la reivindicación 26, en el cual dichos nodos polimórficos generados (212) se utilizan en optimizaciones de núcleo operativo o kernel genéricas al inferir información a partir del puntero de función del nodo polimórfico (212), que, de otro modo, podría ser indeterminable a partir del nodo polimórfico (212).

37. Un aparato traductor para uso en un entorno informático de objetivo que tiene un procesador y una memoria conectada al procesador para traducir código de programa sujeto (10) apropiado en un entorno informático sujeto, a fin de producir código de programa de objetivo (20) apropiado para el entorno informático de objetivo, de tal manera que el aparato traductor comprende:

un mecanismo de descodificación, configurado para descodificar instrucciones en el código de programa sujeto (10);

un mecanismo de generación de representación intermedia, configurado para generar una representación intermedia (204, 210) del código de programa sujeto (10) descodificado, de tal manera que los nodos de IR (60, 70) de la representación intermedia (204, 210) son representaciones abstractas de las expresiones, cálculos y operaciones llevados a cabo por el código de programa sujeto (10);

caracterizado por:

un mecanismo de determinación de tipo de representación intermedia, configurado para determinar qué tipo de nodos de IR (60, 70) se ha de generar en la representación intermedia (204, 210) de entre una pluralidad de tipos posibles de nodos de IR (60, 70), para cada instrucción respectiva en el código de programa sujeto (10) descodificado;

de manera que la pluralidad de tipos posibles de nodos de IR (60, 70) incluye nodos de base (60) y nodos complejos (70);

de tal modo que los nodos de base (60) representan la semántica más básica de cualquier estructura o arquitectura sujeto (10, 14) que corre o hace funcionar el código de programa, de forma que la semántica de los nodos de base (60) no puede ser descompuesta en otros nodos que representen semánticas más simples; y

de tal manera que los nodos complejos (70) proporcionan una representación más compacta de la semántica de instrucciones complejas en el código de programa, que la de las representaciones de los nodos de base.

38. El aparato traductor de acuerdo con la reivindicación 37, en el cual los nodos de base (60) son genéricos a través de una pluralidad de estructuras o arquitecturas sujeto posibles (12, 14).

39. El aparato traductor de acuerdo con la reivindicación 37 ó la reivindicación 38, en el cual los nodos complejos (70) representan instrucciones de tipo inmediato en las que un valor de operando constante es codificado en la propia instrucción de tipo inmediato, contenida en un campo inmediato (72).

40. El aparato traductor de acuerdo con la reivindicación 37, 38 ó 39, en el cual un nodo complejo (70) puede ser descompuesto en una pluralidad de nodos de base (60) para representar la misma semántica de una instrucción en el código de programa descodificado.

41. El aparato traductor de acuerdo con cualquiera de las reivindicaciones 37 a 40, en el cual el código de programa sujeto (10) está diseñado para ser llevado a cabo o ejecutado por una arquitectura sujeto (10, 14), de manera que el mecanismo de generación de representación intermedia comprende, adicionalmente, un mecanismo de generación de nodos complejos destinado a generar nodos complejos (70) únicamente para las características configurables correspondientemente en la arquitectura sujeto (10, 14).

42. El aparato traductor de acuerdo con cualquiera de las reivindicaciones 37 a 41, en el cual la pluralidad de tipos posibles de nodos de IR (60, 70) incluye, adicionalmente, nodos polimórficos (212).

43. El aparato traductor de acuerdo con la reivindicación 42, en el cual el código de programa sujeto (10) está diseñado para su ejecución en una arquitectura sujeto (10, 14) y es traducido dinámicamente a código de objetivo (20) para su ejecución en una arquitectura de objetivo (22, 24), de manera que el mecanismo de generación de representación intermedia (204, 21) comprende, adicionalmente:

un mecanismo de generación de nodos polimórficos, destinado a generar la representación intermedia (204, 210) de manera que incluya los nodos polimórficos (212), de tal modo que los nodos polimórficos (212) contienen un puntero de función que apunta a una función de la arquitectura de objetivo (22, 24) específica de una instrucción particular en el código sujeto (10).

44. El aparato traductor de acuerdo con la reivindicación 43, de tal modo que dicho mecanismo de generación de nodos polimórficos genera nodos polimórficos (212) cuando las características de la arquitectura de objetivo (22, 24) provocarían que se perdiera la semántica de una instrucción sujeto particular si se realizase como nodos de base (60).

45. El aparato traductor de acuerdo con la reivindicación 43 ó la reivindicación 44, en el cual cada nodo polimórfico (212) es específico de una combinación de una instrucción particular en el código sujeto (10) y una función de la arquitectura de objetivo (22, 24).

46. El aparato traductor de acuerdo con la reivindicación 43, 44 ó 45, en el cual dicho mecanismo de determinación de tipo de representación intermedia comprende, adicionalmente, un mecanismo de identificación polimórfica para identificar una instrucción en el código sujeto (10) que corresponde a una instrucción de una lista de instrucciones polimórficas que se han de realizar como nodos polimórficos (212); y

cuando una instrucción sujeto corresponde a una instrucción de la lista de instrucciones polimórficas, dicho mecanismo de generación de representación intermedia (204, 210) genera nodos polimórficos (212) únicamente para las instrucciones sujeto que corresponden a las que se encuentran en la lista de instrucciones polimórficas.

47. El aparato traductor de acuerdo con cualquiera de las reivindicaciones 37 a 46, en el cual la pluralidad de tipos posibles de nodos de IR (60, 70) incluye, adicionalmente, nodos (801) específicos de la arquitectura.

48. El aparato traductor de acuerdo con la reivindicación 47, en el cual el código de programa sujeto (10) se ha diseñado para su ejecución en una arquitectura sujeto (10, 14) y es traducido dinámicamente a código de objetivo (20) para su ejecución en una arquitectura de objetivo (22, 24), de tal modo que dicho mecanismo de generación de representación intermedia (204, 210) comprende, adicionalmente:

un mecanismo de generación de nodo específico de la arquitectura, destinado a generar la representación intermedia (204, 210) de manera que incluya nodos (801) específicos de la arquitectura, que son específicos de una combinación particular de una arquitectura sujeto (10, 14) y una arquitectura de objetivo (22, 24).

49. El aparato traductor de acuerdo con la reivindicación 48, de tal modo que el mecanismo de generación de representación intermedia está configurado para:

representar, inicialmente, todas las instrucciones en el código sujeto (10) como nodos específicos de la arquitectura sujeto, de tal manera que cada nodo (904) específico de la arquitectura sujeto corresponde a una instrucción respectiva en el código sujeto (10);

determinar si una instrucción en el código sujeto (10) es una en la que se ha de proporcionar una función de conversión especializada para la arquitectura de objetivo, que convierte nodos específicos (904) de la arquitectura sujeto en nodos específicos (911) de la arquitectura de objetivo para las instrucciones para las que se ha determinado que proporcionan una función de conversión especializada para la arquitectura de objetivo; y

generar nodos de base (60) a partir de los restantes nodos específicos (904) de la arquitectura sujeto que no se han identificado como suministradores de una función de generación de código especializada para la arquitectura de objetivo.

50. El aparato traductor de acuerdo con la reivindicación 49, que comprende, adicionalmente, un mecanismo de generación de código de objetivo especializado, destinado a generar código de objetivo correspondiente (20) a partir de los nodos específicos (911) de la arquitectura de objetivo, que está especializado para la arquitectura de objetivo (22, 24).

51. El aparato traductor de acuerdo con la reivindicación 48, 49 ó 50, que comprende, adicionalmente, un mecanismo de generación de código de objetivo no especializado, destinado a generar código de objetivo correspondiente (20) a partir de los nodos de base (60), que no está especializado para la arquitectura de objetivo (22, 24).

52. El aparato traductor de acuerdo con la reivindicación 43, en el cual dichos nodos polimórficos generados (212) especifican los registros que han de ser asignados durante la generación de código de objetivo.

53. El aparato traductor de acuerdo con la reivindicación 43, en el cual dichos nodos polimórficos generados (212) se utilizan en optimizaciones genéricas de núcleo operativo o kernel al inferir información a partir del puntero de función en el nodo polimórfico (212), que puede ser, de otro modo, indeterminable a partir del nodo polimórfico (212).

54. El aparato traductor de acuerdo con la reivindicación 46, en el cual, cuando una instrucción sujeto corresponde a una instrucción de la lista de instrucciones polimórficas, dicho mecanismo de generación de representación intermedia genera, bien nodos polimórficos (212) o bien nodos de base (60) para las instrucciones sujeto correspondientes a las que se encuentran en la lista de instrucciones polimórficas.


 

Patentes similares o relacionadas:

Imagen de 'CONVERSION DE CODIGO DE PROGRAMA CON TRADUCCION REDUCIDA'CONVERSION DE CODIGO DE PROGRAMA CON TRADUCCION REDUCIDA, del 2 de Junio de 2010, de TRANSITIVE LIMITED: Un método para realizar la conversión dinámica del código del programa de un código de programa informático, estando el método caracterizado por los pasos […]

Método y sistema para generar un código, del 26 de Julio de 2017, de Deloitte innoWake GmbH: Un método implementado por ordenador para generar un código a partir del código fuente original, mediante el cual el código fuente original incluye al menos una […]

Método y sistema para generar un analizador y análisis de los datos complejos, del 12 de Julio de 2017, de Palantir Technologies, Inc: Un sistema configurado para generar un analizador, el sistema que comprende: un dispositivo de memoria configurado para almacenar un […]

Procedimiento de ejecución de una aplicación sin estar instalada, del 21 de Diciembre de 2016, de Microsoft Technology Licensing, LLC: Un procedimiento de ejecución de una aplicación en un sistema informático local sin que la aplicación esté instalada en el sistema informático local, […]

MÉTODO IMPLEMENTADO POR COMPUTADOR QUE EXPONE APLICACIONES TIPO SOFTWARE A PARTIR DE ESPECIFICACIONES DE DISEÑO, del 17 de Noviembre de 2016, de HUEBRA, Nadia Analía: El presente invento es un sistema y un método que, a partir de la entrada de estructuras lógicas de información en un dispositivo electrónico […]

PROCESO Y SISTEMA PARA GENERAR DOCUMENTOS DE ARQUITECTURA FUNCIONAL Y DOCUMENTOS DE ESPECIFICACIÓN DE ANÁLISIS Y DE DISEÑO DE SOFTWARE DE MANERA AUTOMÁTICA, del 3 de Noviembre de 2016, de HUEBRA, Nadia Analía: El presente invento es un sistema y un método implementado por computador para generar automáticamente documentos de Arquitectura Funcional, documentos de […]

Imagen de 'Método y equipo para la compilación de un lenguaje interpretativo…'Método y equipo para la compilación de un lenguaje interpretativo para televisión interactiva, del 15 de Febrero de 2016, de OPENTV, INC.: Método para compilar un script para ejecución en un dispositivo de cliente en un sistema de televisión interactiva que comprende: recibir una página de HTLM que contiene […]

Colocar instrucción de lanzamiento de excepción en código compilado, del 20 de Enero de 2016, de Microsoft Technology Licensing, LLC: Un método para traducir un código de programa informático desde una primera representación de lenguaje a una segunda representación de lenguaje, comprendiendo el método: […]

Utilizamos cookies para mejorar nuestros servicios y mostrarle publicidad relevante. Si continua navegando, consideramos que acepta su uso. Puede obtener más información aquí. .