stringtranslate.com

Reorientación

En ingeniería de software , la reorientación es un atributo de las herramientas de desarrollo de software que han sido diseñadas específicamente para generar código para más de una plataforma informática.

Compiladores

Un compilador redireccionable es un compilador que ha sido diseñado para que sea relativamente fácil de modificar para generar código para diferentes arquitecturas de conjuntos de instrucciones de CPU . La historia de esta idea se remonta a la década de 1950, cuando se propuso UNCOL como lenguaje intermedio universal. El compilador P de Pascal es un ejemplo de un compilador redireccionable de uso amplio en los primeros tiempos.

El costo de producir un compilador redirigido que genere código de calidad similar a un compilador no redirigido (es decir, uno diseñado para producir código para un solo procesador) es más alto porque no es posible hacer uso de detalles específicos de la CPU en todas las fases de compilación. Los beneficios de un compilador redirigido son que el costo total en múltiples CPU es mucho menor que el costo combinado de muchos compiladores no redirigidos individuales.

Algunos compiladores retargetables, por ejemplo, GCC , fueron tan ampliamente portados y desarrollados que ahora incluyen soporte para muchas optimizaciones y detalles específicos de la máquina, por lo que la calidad del código a menudo supera la de los compiladores no retargetables en muchas CPU.

Una técnica de implementación de uso común es un optimizador global de propósito general seguido de una optimización de mirilla específica de la máquina . [1] La optimización del código para algunos procesadores de alto rendimiento requiere un conocimiento detallado y específico de la arquitectura y de cómo se ejecutan las instrucciones. A menos que los desarrolladores inviertan la gran cantidad de tiempo necesaria para escribir un generador de código específicamente para una arquitectura, las optimizaciones realizadas por un compilador redireccionable solo serán las aplicables a las características genéricas del procesador.

Un compilador redireccionable es un tipo de compilador cruzado . A menudo (pero no siempre) un compilador redireccionable es portátil (el compilador en sí puede ejecutarse en varias CPU diferentes) y autoalojado .

Ejemplos de compiladores reorientables:

Descompilador

retdec ("Retargetable Decompiler") es un descompilador de código máquina retargetable de código abierto basado en LLVM . [ cita requerida ]

Ensambladores

Por el contrario, los ensambladores redireccionables son capaces de generar archivos de objetos de diferentes formatos, lo que resulta útil para trasladar programas en lenguaje ensamblador a varios sistemas operativos que se ejecutan en la misma arquitectura de CPU (como Windows y Linux en la plataforma x86 ). NASM es uno de esos ensambladores.

Lectura adicional

Referencias

  1. ^ Davidson y Fraser; El diseño y la aplicación de un optimizador de mirillas reorientable; ToPLaS v2(2) 191-202 (abril de 1980)
  2. ^ Rainer Leupers, Peter Marwedel. "Tecnología de compiladores redireccionables para sistemas integrados". 2001. ( ISBN 0-7923-7578-5 ) pág. 63. 

Enlaces externos