Un recompilador binario es un compilador que toma archivos binarios ejecutables como entrada, analiza su estructura, aplica transformaciones y optimizaciones y genera nuevos binarios ejecutables optimizados. [1]
Gary Kildall [2] [3] [4] [5] [6] [7] [8] con el desarrollo de la optimización del traductor de código ensamblador XLT86 en 1981. [4 ] [4 ] [4 ] [4 ] [4 ] [4 ] [4 ] [4] Las bases de los conceptos de recompilación binaria fueron establecidas por Gary Kildall [2] [3] [4] [5] [6] [7] [8]. ] [9] [10] [11]
Ver también
- Optimizador binario (binario a binario)
- Traductor binario (binario a binario)
- Descompilador (binario a fuente)
- Desensamblador (binario a fuente)
- Recompilador dinámico (binario a binario)
- Transcompilador (fuente a fuente)
- Honeywell Liberator (que ejecuta programas IBM 1401 en Honeywell H200 )
Referencias
- ^ Mudge, Trevor; Reinhardt, Steve; Tyson, Gary. "Estudios de compilación binaria y compilador combinado / mejoras de arquitectura" . umich.edu . Universidad de Michigan (UM). Archivado desde el original el 23 de julio de 2012 . Consultado el 23 de julio de 2012 .
- ^ Kildall, Gary Arlen (mayo de 1972). Optimización de la expresión global durante la compilación (tesis doctoral). Seattle, Washington, EE.UU .: Universidad de Washington , Grupo de Ciencias de la Computación. Tesis No. 20506, Informe técnico No. 72-06-02.
- ^ Kildall, Gary Arlen (1 de octubre de 1973). "Un enfoque unificado para la optimización del programa global" (PDF) . Actas del 1er Simposio Anual ACM SIGACT-SIGPLAN sobre Principios de Lenguajes de Programación (POPL) . POPL '73. Boston, Massachusetts, EE. UU.: 194–206. doi : 10.1145 / 512927.512945 . hdl : 10945/42162 . S2CID 10219496 . Archivado (PDF) desde el original el 29 de junio de 2017 . Consultado el 20 de noviembre de 2006 .( [1] )
- ^ a b Freiberger, Paul (19 de octubre de 1981). "Los traductores de programas lo hacen literalmente, ya veces en contexto" . InfoWorld - Noticias para usuarios de microcomputadoras . Sección especial: Compatibilidad informática. 3 (22). Popular Computing, Inc. pág. 19. ISSN 0199-6649 . Consultado el 15 de enero de 2020 .
[…] "A menos que tenga un esquema de traducción que tenga en cuenta la peculiar idiosincrasia del microprocesador de destino, no hay forma de que un traductor automático pueda funcionar", explica Daniel Davis, programador de Digital Research . "Terminarás con transliteraciones directas ". […] A pesar de todas estas limitaciones, recientemente se ha avanzado en el desarrollo de traductores. En particular, Digital Research ha introducido su traductor de código ensamblador de ocho a 16 bits. Según una investigación realizada por el presidente de Digital Research, Gary Kildall , el XLT86 parece ofrecer avances sobre la tecnología de traductor de software disponible anteriormente. Al igual que Sorcim 's Trans e Intel ' s Convert 86 , paquete de Kildall traduce el código en lenguaje ensamblador de un 8080 microprocesador para un 8086 . Sin embargo, Kildall ha aplicado una técnica de análisis de flujo global que tiene en cuenta algunos de los principales inconvenientes de otros traductores. El procedimiento analiza el uso del registro y la bandera en secciones del código 8080 para eliminar el código no esencial . Según Davis, programador de Digital Research, el algoritmo que utiliza Kildall permite al traductor considerar el contexto a medida que traduce el programa. Hasta ahora, uno de los mayores problemas con cualquier programa de traducción ha sido la incapacidad del software para hacer mucho más que transliteración. Si el nuevo traductor de Digital Research realmente avanza la tecnología hasta el punto en que se puede considerar el contexto, entonces pueden proliferar más traductores de software en el mercado de las microcomputadoras.
- ^ Wharton, John Harrison (1 de agosto de 1994). "Gary Kildall, pionero de la industria, muerto a los 52: creó los primeros lenguajes de microcomputadoras, sistemas operativos de disco" . Informe del microprocesador . MicroDesign Resources Inc. (MDR). 8 (10). Archivado desde el original el 18 de noviembre de 2016 . Consultado el 18 de noviembre de 2016 .
- ^ "Premio SPA al Dr. Gary A. Kildall: Ganador del Premio a la Trayectoria de 1995 de SPA" . Asociación de Editores de Software (SPA). 1995-03-13. Archivado desde el original el 21 de diciembre de 2019 . Consultado el 21 de diciembre de 2019 a través de www.digitalresearch.biz.
- ^ Swaine, Michael (1 de abril de 1997). "Gary Kildall y el espíritu empresarial colegiado" . Diario del Dr. Dobb . Archivado desde el original el 24 de enero de 2007 . Consultado el 20 de noviembre de 2006 .
En marzo de 1995, la Asociación de Editores de Software honró póstumamente a Gary por sus contribuciones a la industria informática. Enumeraron algunos de sus logros: […] En la década de 1980, a través de DRI , introdujo un recompilador binario. […]
- ^ Huitt, Robert; Eubanks, Gordon ; Rolander, Thomas "Tom" Alan ; Leyes, David; Michel, Howard E .; Halla, Brian; Wharton, John Harrison ; Berg, Brian; Su, Weilian; Kildall, Scott ; Kampe, Bill (25 de abril de 2014). Leyes, David (ed.). "Legacy of Gary Kildall: The CP / M IEEE Milestone Dedication" (PDF) (transcripción de video). Pacific Grove, California, EE.UU .: Museo de Historia de la Computación . Número de referencia CHM: X7170.2014 . Consultado el 19 de enero de 2020 .
[…] Rolander : Mencioné anteriormente que a Gary le gustaba abordar un problema como arquitecto. […] Y dibujaba las imágenes más hermosas de sus estructuras de datos. […] Y cuando terminó eso […] y estaba convencido de que esas estructuras de datos ahora eran correctas, entraría en un modo de codificación increíblemente maníaco. Simplemente pasaba hasta 20 horas al día […] simplemente se ausentaba durante estos períodos de tiempo. En un par de esas ocasiones, cuando tenía algo en funcionamiento la primera vez, que podía ser en medio de la noche. Y todos los que han escrito software han visto que, por ejemplo, la primera vez que aparece en la pantalla, tiene que decírselo a alguien. Mi esposa Lori les dirá que tuve un par de esas llamadas en medio de la noche, LOGO fue un ejemplo, XLT 86 fue otro, donde lo puso en funcionamiento la primera vez, y tenía que que alguien lo viera. Así que no importaba qué hora era, él me llamaba, tenía que venir y verlo correr. […]
[2] [3] (33 páginas) - ^ Barry, Tim (5 de abril de 1982). "XLT-86, un programa de utilidad CP / M de Digital Research" . InfoWorld : el Newsweekly para usuarios de microcomputadoras . Revisión de software de InfoWorld. 4 (13). Popular Computing, Inc. págs. 40-41, 53. ISSN 0199-6649 . Consultado el 25 de enero de 2020 .
[…] XLT-86 es un programa de traducción analítica escrito en PL / I-80 . Lee todo el programa fuente del 8080 , lo ensambla en código de máquina , analiza el registro, la memoria y la utilización de indicadores, y emite un programa optimizado en lenguaje ensamblador 8086 . […] La traducción del programa procede en un proceso de cinco pasos. Primero, el programa se escanea y ensambla para producir valores y ubicaciones de símbolos. En segundo lugar, la estructura del programa se analiza y se descompone en bloques básicos . En tercer lugar, se analizan los bloques básicos para determinar el flujo del programa y el uso de recursos. En cuarto lugar, la estructura de bloques y los datos de asignación de registros se recopilan en una lista para el usuario. En quinto lugar, la información de flujo y el programa fuente se utilizan para producir el programa fuente 8086. […]
- ^ Kildall, Gary Arlen (19 de abril de 1982). Swaine, Michael ; Freiberger, Paul ; Markoff, John Gregory (eds.). "El fundador de Digital Research comenta su visión del negocio" . InfoWorld : el Newsweekly para usuarios de microcomputadoras . Sección especial: CP / M. 4 (15). Popular Computing, Inc. pág. 23-24. ISSN 0199-6649 . Consultado el 17 de enero de 2020 .
[…] Kildall: […] Hace un año y medio probablemente pasaba el 75% de mi tiempo en el negocio y el 25% en la programación. XLT-86 era un producto en el que estaba trabajando en ese momento y me tomó nueve meses hacerlo. Habría sido un proyecto de tres meses si hubiera podido concentrarme en él. […]
- ^ Kildall, Gary Arlen (junio-julio de 1982). Bunnell, David Hugh ; Edlin, Jim (eds.). "Gary Kildall - el hombre que creó CP / M: creador de CP / M - una entrevista en profundidad exclusiva para PC con el pionero del software Gary Kildall" . Revista de PC . Sistemas operativos. Vol. 1 no. 3. Software Communications, Inc. págs. 32–38, 40 . Consultado el 17 de enero de 2020 .
[…] PC: ¿Cuáles son algunas de las complejidades involucradas en la traducción de un programa de la forma 8080 a 8086 ? Kildall : Traducciones directas en el nivel del programa fuente que puede hacer de forma casi mecánica. Por ejemplo, una instrucción 8080 "Agregar 5 inmediato" se convierte en un "Agregar AL 5" en el 8086, una traducción muy sencilla de los códigos de operación en sí. La complejidad de la traducción mecánica proviene de situaciones como esta: la instrucción 8080 DAD H toma el registro HL y le agrega DE. Para el 8086, la instrucción equivalente sería algo como ADD DX BX, lo cual está bien, no hay problema en particular. Simplemente dice que el registro DX es el mismo que HL y BX es el mismo que DE. El problema es que la instrucción 8086 tiene el efecto secundario de establecer el indicador de cero y la instrucción 8080 no. En la traducción mecánica terminas haciendo algo como guardar las banderas, restaurar las banderas, hacer algunos cambios y rotaciones, etc. Estos agregan alrededor de cinco o seis instrucciones adicionales para obtener el mismo efecto semántico. Hay muchas secuencias en el código 8080 que producen secuencias muy extrañas en el código 8086; simplemente no se mapean muy bien debido a los registros de banderas y cosas por el estilo. La forma en que obtenemos el software es una cosa llamada XLT-86 . Han estado fuera seis meses aproximadamente. PC: ¿Por código "mejor" te refieres a más pequeño? Kildall: Un veinte por ciento más pequeño que si solo tomara todos los códigos de operación e hiciera una traducción directa, guardando los registros para preservar la semántica. PC: ¿Cómo se compara el tamaño del programa traducido con la versión 8080? Kildall: Si toma un programa 8080, lo mueve a la tierra 86 y hace una traducción XLT-86, encontrará que es aproximadamente entre un 10 y un 20 por ciento más grande. Con máquinas de 16 bits es más difícil abordar todo; obtienes códigos de operación que son un poco más grandes en promedio. Un fenómeno interesante es que una de las razones por las que no obtiene un aumento tremendo de velocidad en el mundo de 16 bits es porque está ejecutando más códigos de operación a través del bus de datos. […]