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 adaptable es un compilador diseñado para ser relativamente fácil de modificar y generar código para diferentes arquitecturas de conjuntos de instrucciones de CPU . Esta idea se remonta a la década de 1950, cuando se propuso UNCOL como lenguaje intermedio universal. El compilador Pascal P es un ejemplo de un compilador adaptable temprano y ampliamente utilizado.
El coste de producir un compilador adaptable que genere código de calidad similar al de un compilador no adaptable (es decir, uno diseñado para generar código exclusivamente para un único procesador) es mayor, ya que no es posible aprovechar los detalles específicos de la CPU en todas las fases de la compilación. La ventaja de un compilador adaptable es que el coste total para múltiples CPU es mucho menor que el coste combinado de muchos compiladores no adaptables individuales.
Algunos compiladores reorientables, como GCC , se han adaptado y desarrollado tanto que ahora incluyen soporte para muchas optimizaciones y detalles específicos de la máquina, de modo que la calidad del código a menudo supera la de los compiladores no reorientables en muchas CPU.
Un optimizador global de propósito general seguido de una optimización de orificio de inspección específica de la máquina es una técnica de implementación comúnmente utilizada. [ 1 ] La optimización de 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 reorientable solo serán aplicables a las características genéricas del procesador.
Un compilador reorientable es un tipo de compilador cruzado . A menudo (pero no siempre) un compilador reorientable es portable (el compilador en sí puede ejecutarse en varias CPU diferentes) y autoalojado .
Ejemplos de compiladores reorientables:
- GCC
- ACK
- lcc
- VBCC
- Compilador C portátil
- SDCC
- LLVM
- El compilador Small-C
- MPG, el "generador de microprogramas eficiente e independiente de la máquina" [ 2 ]
- Pascal de la UCSD
- Pascal libre
Descompilador
retdec ("Retargetable Decompiler") es un descompilador de código máquina retargetable de código abierto basado en LLVM .
- El descompilador no está limitado a ninguna arquitectura de destino, sistema operativo o formato de archivo ejecutable en particular:
- Formatos de archivo compatibles: ELF, PE, Mach-O, COFF, AR (archivo), Intel HEX y código máquina sin procesar.
- Arquitecturas compatibles (actualmente solo de 32 bits): Intel x86, ARM, MIPS, PIC32 y PowerPC.
Ensambladores
Por el contrario, los ensambladores reorientables pueden generar archivos objeto de diferentes formatos, lo cual resulta útil para portar programas en lenguaje ensamblador a diversos sistemas operativos que se ejecutan en la misma arquitectura de CPU (como Windows y Linux en la plataforma x86 ). NASM es uno de estos ensambladores.
Lecturas adicionales
- Un compilador C reorientable: diseño e implementación ( ISBN) 0-8053-1670-1)
Referencias
- ↑ "Davidson y Fraser; El diseño y la aplicación de un optimizador de mirillas reorientable; ToPLaS v2(2) 191-202 (abril de 1980)" (PDF) . Archivado del original (PDF) el 23 de febrero de 2024. Consultado el 31 de agosto de 2009 .
- ↑ Rainer Leupers, Peter Marwedel. "Tecnología de compiladores reorientables para sistemas embebidos" . 2001. ( ISBN) 0-7923-7578-5) pág. 63.
Enlaces externos
- Sitio web del compilador LANCE
- El sitio web de la infraestructura del compilador LLVM
- La página de SourceForge de ACK (código abierto)
- Página del compilador C de Nils Weller
- Sitio web de RetDec archivado el 24/10/2020 en Wayback Machine .
- Compiladores