ES2442842T3 - Optimización de código de programa generado por compilador - Google Patents

Optimización de código de programa generado por compilador Download PDF

Info

Publication number
ES2442842T3
ES2442842T3 ES03717297.0T ES03717297T ES2442842T3 ES 2442842 T3 ES2442842 T3 ES 2442842T3 ES 03717297 T ES03717297 T ES 03717297T ES 2442842 T3 ES2442842 T3 ES 2442842T3
Authority
ES
Spain
Prior art keywords
code
library
program code
program
compiler
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
ES03717297.0T
Other languages
English (en)
Inventor
Michael Baldischweiler
Werner Ness
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
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
Application filed by Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Application granted granted Critical
Publication of ES2442842T3 publication Critical patent/ES2442842T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

Procedimiento para la optimización de código (38) de programa generado por compilador, que está previsto para un soporte (10) de datos portátil con un núcleo (12) de procesador así como una primera (24) y una segunda zona (26) de almacenamiento, - en el que la primera zona (24) de almacenamiento está prevista para recibir el código (44) de programa optimizado, - en el que la segunda zona (26) de almacenamiento está prevista para recibir una biblioteca (28) con una pluralidad de fragmentos (30x) de código de biblioteca, - en el que en el código (38) de programa generado por compilador se buscan fragmentos (42) de código de programa que, al menos con respecto a su acción, corresponden en cada caso a un fragmento (30x) de código de biblioteca, en el que los fragmentos (42) de código de programa encontrados de este modo se sustituyen por en cada caso una llamada del fragmento (30x) de código de biblioteca correspondiente, caracterizado porque la biblioteca está predefinida, de modo que la biblioteca no depende del código de programa procesado en la ejecución de optimización actual y se fija de manera invariable para la segunda zona (26) de almacenamiento, antes de que se optimice el código de programa generado por compilador.

Description

Optimización de código de programa generado por compilador.
La invención se refiere a la programación de soportes de datos portátiles así como a la ejecución de programa por soportes de datos portátiles. Un soporte de datos portátil en el sentido del presente documento puede ser en particular una tarjeta chip (smart card, tarjeta inteligente) en diferentes formas de construcción o un módulo chip.
Los soportes de datos portátiles, tal como son habituales en la actualidad, presentan un núcleo de procesador y varias memorias fabricadas en diferentes tecnologías. En una configuración típica están previstas, por ejemplo, una ROM programada por máscara, una EEPROM programable y borrable eléctricamente y una RAM escribible. La RAM sirve como memoria de trabajo durante la ejecución del programa, mientras que el código de programa que va a ejecutarse por el núcleo de procesador puede estar almacenado en la ROM y/o en la EEPROM. En el apartado 3.4 del libro “Handbuch der Chipkarten” de W. Rankl y W. Effing, Hanser Verlag, 3ª edición 1999, se describen éstas configuraciones y configuraciones similares de soportes de datos portátiles.
Normalmente una celda de memoria en la EEPROM ocupa aproximadamente cuatro veces la superficie de chip de una celda de memoria de ROM. Por tanto, por motivos de ahorro de superficie o de mayor capacidad de memoria disponible con la misma superficie es deseable disponer el código de programa que va a ejecutarse en su mayor parte posible en la ROM. No obstante, el contenido de la ROM programada por máscara debe fijarse ya de manera invariable en la fabricación para grandes números de unidades del soporte de datos. Por el contrario, la EEPROM sólo se escribe al completar e inicializar una serie de soportes de datos o al personalizar los soportes de datos individuales. Por ello, debido a la mayor flexibilidad es ventajoso un almacenamiento del código de programa ejecutable en su mayor parte posible en la EEPROM. Esto se refiere tanto a la programación de menores números de unidades de soportes de datos como a la corrección de errores y la introducción de funciones adicionales en el caso de grandes series.
Por tanto, en la programación de soportes de datos portátiles, por un lado existe el problema de aprovechar la ROM programada por máscara o una memoria comparable en su mayor parte posible y, por otro lado, conseguir una flexibilidad lo más elevada posible para modificaciones de programa y/o para la fabricación de soportes de datos en menores números de unidades.
Según la invención, este problema se soluciona en su totalidad o en parte mediante un procedimiento con las características de la reivindicación 1, un producto de programa informático según la reivindicación 8 y un soporte de datos portátil según la reivindicación 10. Las reivindicaciones dependientes definen configuraciones preferidas de la invención. El orden de enumeración de las etapas en las reivindicaciones de procedimiento no debe entenderse como limitación del alcance de protección. Más bien están previstas configuraciones de la invención en las que estas etapas se realizan en otro orden o total o parcialmente en paralelo o total o parcialmente combinadas.
La invención parte de la idea básica de utilizar, para la optimización del código de programa, una biblioteca predefinida que contiene una pluralidad de fragmentos de código de biblioteca. En la operación de optimización según la invención, en el código de programa que va a optimizarse se buscan a su vez fragmentos de código de programa que, con respecto a su acción o función, corresponden en cada caso a un fragmento de código de biblioteca. Tales fragmentos de código de programa se sustituyen en cada caso por una llamada del fragmento de código de biblioteca correspondiente. El código de programa optimizado se almacena en una primera zona de almacenamiento del soporte de datos (por ejemplo, en la EEPROM), mientras que la biblioteca está prevista para su almacenamiento en una segunda zona de almacenamiento (por ejemplo, en la ROM).
La operación de optimización según la invención llevó, en las pruebas llevadas a cabo por los inventores, a una reducción considerable del tamaño del código de programa previsto para la primera zona de almacenamiento. Este resultado es sorprendente porque de manera intuitiva se supondría que con un volumen realista de la biblioteca sólo se obtendrían unas pocas coincidencias de partes del código de programa con los fragmentos de código de biblioteca.
La reducción del tamaño de código provocada por la invención tiene como consecuencia que con un soporte de datos con un equipamiento de memoria predeterminado pueden recibirse códigos de programa para funciones adicionales en la primera zona de almacenamiento. En caso de que la primera zona de almacenamiento esté configurada como EEPROM o en una tecnología comparable, entonces este código de programa sólo tiene que cargarse al completar o inicializar o personalizar el soporte de datos. Por tanto, una modificación o nueva generación del código de programa, que por su compacidad implementa un gran número de funciones, en primer lugar es rápida y en segundo lugar ya es posible para pequeños números de unidades de soportes de datos o incluso para soportes de datos individuales.
La biblioteca predefinida se encuentra según la invención en la segunda zona de almacenamiento, esto es, por ejemplo, en la ROM programada por máscara. Por regla general, el ahorro de código de programa conseguido mediante la optimización según la invención es menor que el tamaño de la biblioteca. Sin embargo, también en este caso es ventajosa la utilización de la invención, porque la primera zona de almacenamiento valiosa se aprovecha mejor. En caso de que en el código de programa generado por compilador se encuentren muchos fragmentos de código que en cada caso pueden sustituirse por grupos por en cada caso un único fragmento de código de la biblioteca, y en caso de que la biblioteca sólo contenga unos pocos fragmentos de código no necesarios, el código de programa, mediante la optimización, puede disminuir incluso en más de la longitud de biblioteca. En este caso, el uso de la invención es ventajoso incluso cuando la primera y la segunda zona de almacenamiento sólo son segmentos conceptuales del mismo campo de memoria físico.
Según la invención, para la optimización se buscan fragmentos de código de programa, es decir, segmentos en el código de programa generado por compilador que pueden sustituirse por fragmentos de código de biblioteca correspondientes. En la creación del programa, el programador no tiene que tener en cuenta esta operación de optimización posterior; en particular, no es necesario que prevea en el programa llamadas de rutinas de biblioteca. Por tanto, el desarrollo del programa no se ve dificultado de ningún modo por la invención.
En la terminología utilizada en el presente documento, los términos “código de programa” o “fragmento de código” se referirán tanto a código de máquina ejecutable antes o después del enlace como al código fuente de ensamblador correspondiente. Dicho de otro modo, en diferentes configuraciones de la invención, la operación de optimización según la invención puede llevarse a cabo tanto basándose en el código fuente de ensamblador generado por compilador como basándose en el código de máquina ya ensamblado. En el caso mencionado en primer lugar, el ensamblaje y dado el caso el enlace sólo se producen tras la optimización. La biblioteca, durante la optimización, también puede estar presente como código fuente de ensamblador y/o como código de máquina ya ensamblado.
En general, una sustitución de un fragmento de código de programa por un fragmento de código de biblioteca siempre es posible cuando ambos fragmentos de código ejecutan funciones mutuamente correspondientes. En este caso pueden llevarse a cabo cálculos complejos con respecto a las acciones precisas de los fragmentos de código para, por ejemplo, activar una operación de sustitución también cuando instrucciones individuales en los fragmentos de código están cambiadas de manera no perjudicial. Por el contrario, en ejemplos de realización especialmente sencillos, sólo se lleva a cabo una sustitución cuando los fragmentos de código son idénticos con respecto al código de máquina definido por los mismos. Sin embargo, también en esta configuración sencilla es necesario un cierto análisis de los fragmentos de código, porque por regla general no debe sustituirse por ejemplo un fragmento de código que presenta un salto con un destino de salto que no está situado en el fragmento de código.
Se obtienen posibilidades de sustitución adicionales cuando se utilizan fragmentos de código parametrizados que, de manera similar a una llamada de procedimiento, contienen uno o varios parámetros (por ejemplo direcciones de memoria o valores numéricos).
Preferiblemente, por regla general, la llamada de un fragmento de código de biblioteca se produce por una instrucción de llamada de subrutina introducida en el código de programa. Entonces en la biblioteca está prevista una instrucción de retorno que sigue directamente al fragmento de código de biblioteca. En algunas formas de realización pueden ser válidas excepciones a esta regla, cuando el fragmento de código que va a sustituirse interviene en el flujo de programa. En caso de que, por ejemplo, el fragmento de código termine con una instrucción de retorno de subrutina, entonces por regla general la llamada puede producirse por medio de una instrucción de salto.
Según la invención, la biblioteca utilizada está predefinida, es decir, no depende del código de programa procesado en la ejecución de optimización actual. Sin embargo, para conseguir los mejores resultados de optimización posibles, la biblioteca está configurada preferiblemente de modo que contiene entradas adecuadas para estructuras del código de programa que aparecen con frecuencia. Tales segmentos de código que aparecen con frecuencia pueden depender en particular del hardware y/o un sistema operativo del soporte de datos y/o de un compilador utilizado en la generación del código de programa generado por compilador.
El producto de programa informático previsto según la invención puede ser en particular un soporte de datos legible por ordenador tal como, por ejemplo, un medio de almacenamiento electrónico o magnético u óptico, aunque no se limita a soportes de datos físicos. En el sentido utilizado en el presente documento, como producto de programa informático también se entenderán señales eléctricas u ópticas (por ejemplo nivel de tensión de una conexión de comunicación). El producto de programa informático contiene código de programa que ejecuta las etapas de optimización según la invención. Preferiblemente el producto de programa informático contiene además un compilador y/o un ensamblador y/o un programa de enlace y/o un programa de carga.
El producto de programa informático según la invención y el soporte de datos portátil según la invención están perfeccionados preferiblemente con características que corresponden a las características descritas anteriormente y/o mencionadas en las reivindicaciones de procedimiento.
Características, objetivos y ventajas adicionales de la invención se deducen a partir de la siguiente descripción de un ejemplo de realización y varias alternativas de realización. Se remite al dibujo esquemático, en el que la única figura La invención se utiliza en la programación de un soporte 10 de datos portátil, que en el ejemplo de realización descrito en este caso está configurado como tarjeta chip. De una manera en sí conocida, el soporte 10 de datos contiene un chip de semiconductor con un núcleo 12 de procesador, una ROM 14 programada por máscara, una EEPROM 16, una RAM 18 y una interfaz 20 para la comunicación sin contacto o con contacto. Los componentes mencionados están conectados entre sí a través de un bus 22. En alternativas de realización, los tres campos 14, 16, 18 de memoria pueden estar configurados en otras tecnologías; en particular puede utilizarse la tecnología flash para la ROM 14 y/o la EEPROM 16.
En los campos 14, 16, 18 de memoria están previstas de manera conceptual una primera y una segunda zona 24, 26 de almacenamiento. La primera zona 24 de almacenamiento sirve para recibir el código de programa optimizado en forma de código de máquina ejecutable. En la segunda zona 26 de almacenamiento se almacena una biblioteca 28 predefinida igualmente en forma de código de máquina ejecutable. La primera zona 24 de almacenamiento se encuentra en el ejemplo de realización descrito en este caso en la EEPROM 16, y la segunda zona 26 de almacenamiento se encuentra en la ROM 14. De una manera en sí conocida, la ROM 14 contiene además de la segunda zona 26 de almacenamiento otras rutinas predeterminadas de manera fija, que por ejemplo forman un sistema operativo del soporte 10 de datos. La EEPROM 16 contiene además un sistema de ficheros para datos, que se almacenarán de manera no volátil en el soporte 10 de datos.
La biblioteca 28 presenta un gran número de fragmentos 30A, 30B, 30C, ... de código de biblioteca predefinidos, que a continuación en general se designan con 30x. En la figura 1, los fragmentos 30x de código de biblioteca, por motivos de una representación más clara, se muestran como código fuente de ensamblador. Por regla general, a cada fragmento 30x de código de biblioteca le sigue directamente una instrucción 32A, 32B, ... de retorno de subrutina (a continuación en general denominada 32x). Sin embargo, puede omitirse la instrucción 32x de retorno de subrutina, cuando no puede conseguirse en la ejecución del fragmento 30x de código de biblioteca, porque por ejemplo cada ejecución del programa del fragmento 30x de código de biblioteca termina en un punto de salida o en un retorno de subrutina contenido en el fragmento 30x de código de biblioteca.
El desarrollo del programa para el soporte 10 de datos portátil parte de un código 34 fuente de alto nivel, que en la figura 1 se representa a modo de ejemplo en el lenguaje de programación C. El fragmento mostrado en la figura 1 espera a que el tercer bit desde la posición de las unidades del registro de entrada INPORT adopte el valor “0”, y a continuación pone el registro de salida OUTPORT al valor hexadecimal “FF”. Un compilador 36 en sí conocido convierte el código 34 fuente de alto nivel en código 38 de programa generado por compilador, que en la figura 1 se representa en forma de código fuente de ensamblador para el conjunto de instrucciones 6805. En alternativas de realización se prevén otros conjuntos de instrucciones, en cada caso conforme al núcleo 12 de procesador.
Un programa 40 de optimización ejecuta las etapas de optimización esenciales para el presente ejemplo de realización. El programa 40 de optimización procesa el código 38 de programa generado por compilador y además accede a información sobre los fragmentos 30x de código de biblioteca contenidos en la biblioteca 28. En diferentes variantes de realización, en esta información puede estar contenida por ejemplo una copia de la biblioteca 28 en el código fuente de ensamblador y/o una copia de la biblioteca 28 en el código de máquina ejecutable y/o una especificación de la acción de los fragmentos 30x de código de biblioteca individuales en un lenguaje de descripción adecuado. Además puede estar prevista información adicional como por ejemplo índices o tablas hash, para acelerar las operaciones de búsqueda llevadas a cabo por el programa 40 de optimización.
El programa 40 de optimización identifica los fragmentos 42 de código de programa contenidos en el código 38 de programa generado por compilador, que en la ejecución mediante el núcleo 12 de procesador presentan una función idéntica a los fragmentos 30x de código de biblioteca contenidos en la biblioteca 28. Para ello, en el presente ejemplo de realización se utiliza un procedimiento relativamente sencillo, en el que el código 38 de programa generado por compilador se compara a nivel de texto fuente de ensamblador con las entradas individuales en la biblioteca 28. Con respecto al comando abreviado y las indicaciones de dirección y de valor a este respecto puede tener lugar una comparación textual. Por el contrario, los destinos de salto simbólicos deben transformarse antes de la comparación en una forma estandarizada o en un valor relativo numérico. Por el contrario, en alternativas de realización la optimización puede producirse basándose en un código 38 de programa generado por compilador, que ya está presente en forma de código de máquina ensamblado.
Un fragmento 42 de código de programa, para el que en la operación de comparación se encontró un fragmento 30x de código de biblioteca correspondiente, se sustituye en la operación de optimización por una llamada de este fragmento 30x de código de biblioteca. En la figura 1 por ejemplo el fragmento 42 de código de programa y el fragmento 30B de código de biblioteca son idénticos a excepción de la denominación simbólica del destino de salto. Por tanto, el programa 40 de optimización sustituye este fragmento 42 de código de programa en el código 44 de programa optimizado por una llamada del fragmento 30B de código de biblioteca. En el presente ejemplo, esta llamada está configurada como instrucción 46 de llamada de subrutina. Como el fragmento 42 de código de programa en el presente ejemplo corresponde a un código de máquina de siete bytes de longitud y la instrucción 46 Tras finalizar la optimización, el código 44 de programa optimizado se convierte mediante un ensamblador 48 en código de máquina ejecutable por el núcleo 12 de procesador. Después de una operación de enlace, dado el caso necesaria, con partes de programa adicionales, al completar o inicializar o personalizar el soporte 10 de datos se carga el código en la primera zona 24 de almacenamiento. La biblioteca 28 ya se encuentra desde la fabricación del chip del soporte 10 de datos en la segunda zona 26 de almacenamiento. Así, el soporte 10 de datos está listo para su uso. Las etapas de conversión, optimización y ensamblaje descritas anteriormente se llevan a cabo por un ordenador de propósito general (no mostrado en la figura 1), que ejecuta el compilador 36, el programa 40 de optimización y el ensamblador 48.
Cuando durante el funcionamiento del soporte 10 de datos, la ejecución de programa por el núcleo 12 de procesador en la primera zona 24 de almacenamiento llega al punto de la instrucción 46 de llamada de subrutina, se ejecuta el fragmento 30B de código de biblioteca en la segunda zona 26 de almacenamiento como subrutina. En su acción, las instrucciones ejecutadas corresponden exactamente al fragmento 42 de código de programa eliminado en la optimización. Tras la ejecución de estas instrucciones, el núcleo 12 de procesador ejecuta un retorno activado por la instrucción 32B de retorno de subrutina a la instrucción en la primera zona 24 de almacenamiento que sigue directamente a la instrucción 46 de llamada de subrutina.
En la optimización ha de prestarse atención de que no se modifiquen las funciones de programa. Así, por ejemplo, los fragmentos 42 de código de programa con instrucciones de salto, que posiblemente presentan un destino de salto situado fuera del fragmento 42 de código de programa, sólo deberían sustituirse tras un análisis preciso. Se permite una sustitución cuando cada ejecución posible del fragmento 42 de código de programa termina con un punto de salida o un retorno de subrutina. Sin embargo, en estos casos la llamada del fragmento 30x de código de biblioteca correspondiente no se produce con una instrucción de llamada de subrutina, sino con una instrucción de salto normal. Estas consideraciones también pueden producirse ya en la creación de la biblioteca 28, de modo que ésta sólo contenga aquellos fragmentos 30x de código de biblioteca, cuyo uso se permite sin condiciones secundarias adicionales.
La biblioteca 28 debería construirse de modo que proporcione fragmentos 30x de código de biblioteca adecuados con la mayor frecuencia posible y así ofrezca el mayor número posible de posibilidades de optimización. Así, el fragmento 30B de código de biblioteca de la figura 1 está adaptado por ejemplo a las propiedades de hardware del soporte 10 de datos. Cuando el bit de entrada consultado en este fragmento 30B de código de biblioteca corresponde a un valor de señal necesario a menudo entonces ha de partirse de la base de que los fragmentos 42 de código de programa correspondientes siempre se encontrarán en el código 42 de programa generado por compilador para las más diferentes aplicaciones del soporte 10 de datos. De manera similar, llamadas de sistema operativo frecuentes pueden cubrirse por fragmentos 30x de código de biblioteca correspondientes. Se obtiene una fuente adicional para fragmentos de código que se repiten en el código 38 de programa generado por compilador por el hecho de que la generación de código en el compilador 36 se produce esquemáticamente y por tanto se generan estructuras de código repetitivas.
Por tanto, en general para la generación de la biblioteca 28 es ventajoso evaluar estadísticamente el código 38 de programa generado por el compilador 36 para una pluralidad de aplicaciones que están previstas para el hardware y el sistema operativo del soporte 10 de datos.

Claims (10)

  1. REIVINDICACIONES
    1. Procedimiento para la optimización de código (38) de programa generado por compilador, que está previsto para un soporte (10) de datos portátil con un núcleo (12) de procesador así como una primera (24) y una segunda zona
    (26) de almacenamiento,
    -
    en el que la primera zona (24) de almacenamiento está prevista para recibir el código (44) de programa optimizado,
    -
    en el que la segunda zona (26) de almacenamiento está prevista para recibir una biblioteca (28) con una pluralidad de fragmentos (30x) de código de biblioteca,
    -
    en el que en el código (38) de programa generado por compilador se buscan fragmentos (42) de código de programa que, al menos con respecto a su acción, corresponden en cada caso a un fragmento (30x) de código de biblioteca, en el que los fragmentos (42) de código de programa encontrados de este modo se sustituyen por en cada caso una llamada del fragmento (30x) de código de biblioteca correspondiente,
    caracterizado porque
    la biblioteca está predefinida, de modo que la biblioteca no depende del código de programa procesado en la ejecución de optimización actual y se fija de manera invariable para la segunda zona (26) de almacenamiento, antes de que se optimice el código de programa generado por compilador.
  2. 2.
    Procedimiento según la reivindicación 1, caracterizado porque se sustituye un fragmento (42) de código de programa por un fragmento (30x) de código de biblioteca sólo cuando ambos fragmentos (42, 30x) de código son idénticos en su forma como código de máquina ejecutable.
  3. 3.
    Procedimiento según la reivindicación 1, caracterizado porque al menos algunos fragmentos (30x) de código de biblioteca están parametrizados.
  4. 4.
    Procedimiento según una de las reivindicaciones 1 a 3, caracterizado porque un fragmento (42) de código de programa que va a sustituirse se sustituye al menos cuando no interviene en el flujo de programa por una instrucción
    (46) de llamada de subrutina para el fragmento (30x) de código de biblioteca correspondiente.
  5. 5.
    Procedimiento según una de las reivindicaciones 1 a 4, caracterizado porque el código (38) de programa generado por compilador está presente en forma de código fuente de ensamblador, y porque la operación de optimización se realiza a nivel de código fuente.
  6. 6.
    Procedimiento según una de las reivindicaciones 1 a 5, caracterizado porque la biblioteca (28) predefinida está adaptada al hardware del soporte (10) de datos portátil y/o a un sistema operativo del soporte (10) de datos portátil y/o a un compilador (36) utilizado en la generación del código (38) de programa generado por compilador.
  7. 7.
    Procedimiento según una de las reivindicaciones 1 a 6, caracterizado porque la primera zona (24) de almacenamiento puede programarse eléctricamente, y/o porque la segunda zona (26) de almacenamiento puede programarse por máscara, y/o porque la primera zona (24) de almacenamiento en el soporte (10) de datos portátil requiere más superficie de chip por celda de memoria que la segunda zona (26) de almacenamiento.
  8. 8.
    Producto de programa informático con instrucciones de programa para un ordenador de propósito general, que hacen que el ordenador de propósito general ejecute un procedimiento según una de las reivindicaciones 1 a 7.
  9. 9.
    Producto de programa informático según la reivindicación 8, caracterizado porque las instrucciones de programa implementan además un compilador (36) para convertir un código (34) fuente de alto nivel en el código (38) de programa generado por compilador.
  10. 10.
    Soporte (10) de datos portátil con un núcleo (12) de procesador, una primera zona (24) de almacenamiento y una segunda zona (26) de almacenamiento, en el que en la primera zona (24) de almacenamiento está contenido un código (44) de programa optimizado, que se generó mediante un procedimiento según una de las reivindicaciones 1 a 7, y en la segunda zona (26) de almacenamiento está contenida una biblioteca (28) predefinida independientemente del código (44) de programa optimizado con una pluralidad de fragmentos (30x) de código de biblioteca.
ES03717297.0T 2002-04-15 2003-04-11 Optimización de código de programa generado por compilador Expired - Lifetime ES2442842T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10216602 2002-04-15
DE10216602A DE10216602A1 (de) 2002-04-15 2002-04-15 Optimierung von compilergeneriertem Programmcode
PCT/EP2003/003803 WO2003088039A2 (de) 2002-04-15 2003-04-11 Optimierung von compilergeneriertem programmcode

Publications (1)

Publication Number Publication Date
ES2442842T3 true ES2442842T3 (es) 2014-02-13

Family

ID=28685070

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03717297.0T Expired - Lifetime ES2442842T3 (es) 2002-04-15 2003-04-11 Optimización de código de programa generado por compilador

Country Status (9)

Country Link
US (1) US7805718B2 (es)
EP (1) EP1497722B1 (es)
JP (1) JP4632666B2 (es)
CN (1) CN100370424C (es)
AU (1) AU2003222291A1 (es)
DE (1) DE10216602A1 (es)
ES (1) ES2442842T3 (es)
IL (1) IL164582A (es)
WO (1) WO2003088039A2 (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004014885B4 (de) * 2004-03-26 2016-04-14 Giesecke & Devrient Gmbh Verfahren zur Optimierung eines Programms eines tragbaren Datenträgers
US20060242631A1 (en) * 2005-04-22 2006-10-26 Andersen Jakob R Process and system for sharing program fragments
CN101395580B (zh) * 2006-03-01 2012-06-20 诺基亚公司 通过在库中描绘特定函数减小代码大小
WO2007099324A1 (en) * 2006-03-01 2007-09-07 Symbian Software Limited Duplicate code detection
GB0607068D0 (en) * 2006-04-07 2006-05-17 Symbian Software Ltd Improvement relating to method of embedding software in computing devices
WO2007099322A2 (en) * 2006-03-01 2007-09-07 Symbian Software Limited Procedural abstraction for executable code
WO2008107936A1 (ja) * 2007-03-08 2008-09-12 Fujitsu Microelectronics Limited ソフトウェア最適化装置、および最適化方法
US8359586B1 (en) * 2007-08-20 2013-01-22 The Mathworks, Inc. Code generation
CN102998541B (zh) * 2011-09-08 2015-04-15 立讯精密工业(昆山)有限公司 连接线自动测量方法及装置
JP2013210920A (ja) * 2012-03-30 2013-10-10 Nec Corp コンパイル装置、コンパイル方法及びコンパイラ
CN102902548B (zh) * 2012-10-24 2016-08-03 中国科学院声学研究所 汇编级内存复制标准库函数的生成方法及装置
CN103049302B (zh) * 2012-12-28 2016-03-16 中国科学院声学研究所 由程序生成优化的strcpy标准库函数汇编代码的方法
CN103901810B (zh) * 2012-12-31 2017-04-12 施耐德电器工业公司 可编程控制器用户应用的优化***及方法
CN105247480B (zh) * 2013-06-28 2020-03-06 英特尔公司 跨独立应用商店的网络应用的兼容及优化
GB2505564B (en) 2013-08-02 2015-01-28 Somnium Technologies Ltd Software development tool
US9280339B1 (en) * 2013-12-12 2016-03-08 Amazon Technologies, Inc. Class replacer during application installation
US9495138B1 (en) * 2016-01-04 2016-11-15 International Business Machines Corporation Scheme for verifying the effects of program optimizations
CN106874577A (zh) * 2017-01-20 2017-06-20 上海新储集成电路有限公司 一种存储器编译器

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55137360A (en) * 1979-04-16 1980-10-27 Nissan Motor Co Ltd Controller for automobile
JPH0795275B2 (ja) * 1987-11-13 1995-10-11 富士通株式会社 コンパイル処理装置
JPH03291786A (ja) * 1990-04-10 1991-12-20 Matsushita Electric Ind Co Ltd Icカード
US5339428A (en) * 1991-09-04 1994-08-16 Digital Equipment Corporation Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register
JPH08263299A (ja) * 1995-03-27 1996-10-11 Sanyo Electric Co Ltd プログラム変換方法
US5794044A (en) * 1995-12-08 1998-08-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
US5815721A (en) * 1996-04-25 1998-09-29 Hewlett-Packard Company Method and apparatus for optimizing complex control structures using abstract web patterns
BR9713267A (pt) * 1996-10-25 2004-06-15 Schlumberger Systems & Service Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação
US5903795A (en) * 1997-05-23 1999-05-11 Eastman Kodak Company Photographic processor
US5903759A (en) * 1997-06-04 1999-05-11 3 Com Corporation Software performance analysis using hardware analyzer
JP2002501269A (ja) * 1998-01-22 2002-01-15 モンデックス インターナショナル リミテッド コードレット
JPH11327887A (ja) * 1998-05-13 1999-11-30 Nec Corp 自動部品化機能付コンパイラシステムおよび記録媒体
FR2783065B1 (fr) * 1998-09-07 2001-01-19 Rue Cartes Et Systemes De Procede de compression de code interpretable
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
FR2785695B1 (fr) * 1998-11-06 2003-01-31 Bull Cp8 Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants
JP3507728B2 (ja) * 1999-06-07 2004-03-15 エヌイーシーソフト沖縄株式会社 メモリ削減方法および装置
JP4041248B2 (ja) * 1999-07-09 2008-01-30 松下電器産業株式会社 コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法
US6718543B2 (en) * 1999-11-08 2004-04-06 Hewlett-Packard Development Company, L.P. Method and apparatus for optimization of the performance of an application program in a computer system while preserving the system behavior
JP3650713B2 (ja) * 2000-02-04 2005-05-25 松下電器産業株式会社 プログラム変換装置、プログラム変換方法及びプログラム記憶媒体

Also Published As

Publication number Publication date
CN1703674A (zh) 2005-11-30
US7805718B2 (en) 2010-09-28
DE10216602A1 (de) 2003-10-30
AU2003222291A1 (en) 2003-10-27
IL164582A0 (es) 2005-12-18
EP1497722B1 (de) 2013-11-13
US20050235268A1 (en) 2005-10-20
WO2003088039A2 (de) 2003-10-23
JP4632666B2 (ja) 2011-02-16
WO2003088039A3 (de) 2004-11-04
IL164582A (en) 2012-03-29
CN100370424C (zh) 2008-02-20
JP2005522772A (ja) 2005-07-28
EP1497722A2 (de) 2005-01-19

Similar Documents

Publication Publication Date Title
ES2442842T3 (es) Optimización de código de programa generado por compilador
US8521989B2 (en) Programmable and scalable microcontroller architecture
CN1162775C (zh) 在配备数据处理资源的多用途平台式***中加载应用的方法,对应的执行***和方法
US8555260B1 (en) Direct hardware processing of internal data structure fields
KR20040076589A (ko) 메모리 카드
US6817015B2 (en) Microcontroller with modifiable program
KR20010043826A (ko) 마이크로 컨트롤러 명령어 집합
CN113468079B (zh) 内存访问方法及装置
ES2396800T3 (es) Microprocesador o microcontrolador potenciado
CN109240729A (zh) 一种修复固件代码的方法及***
US9110657B2 (en) Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture
KR101826778B1 (ko) 플래쉬 라이프 사이클 및 성능 개선을 고려한 eeprom 에뮬레이션 구현 방법
CN102681819A (zh) 实现灵活且低成本的指令替换方法及装置
US6442058B2 (en) Control circuit and semiconductor device including same
JPH11149372A (ja) データramを用いたマイクロコントローラ用の強制ページゼロページング方式
JP2011203809A (ja) データ処理方法、プログラムおよびシステム
US6886159B2 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
CN104077173A (zh) 智能卡内java程序指令的执行方法及智能卡
EP3323039B1 (en) A method for enlarging data memory in an existing microprocessor architecture with limited memory addressing
EP3367245B1 (en) A method of managing semiconductor memories, corresponding interface, memory and device
US20230176865A1 (en) Computing device
US20050081196A1 (en) Program redirection and modification method for embedded processors with a limited amount of static random access memory
KR100199477B1 (ko) 절약된 메모리를 갖는 전자제어 시스템 및 메모리 절약 방법
ES2309569T3 (es) Acceso a elementos de datos en un soporte de datos portatil.
CN116225553A (zh) 一种处理器动态上电时序加载配置装置