Articulo de referencia

Recompilador binario

Un recompilador binario es un compilador que toma como entrada archivos binarios ejecutables , analiza su estructura, aplica transformaciones y optimizaciones, y genera nuevos b...

Un recompilador binario es un compilador que toma como entrada archivos binarios ejecutables , analiza su estructura, aplica transformaciones y optimizaciones, y genera nuevos binarios ejecutables optimizados. [ 1 ]

Los fundamentos de los conceptos de recompilación binaria fueron establecidos por Gary Kildall [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] con el desarrollo del traductor de código ensamblador optimizador XLT86 en 1981. [ 4 ] [ 9 ] [ 10 ] [ 11 ]

Véase también

Referencias

  1. Mudge, Trevor; Reinhardt, Steve; Tyson, Gary. "Recompilación binaria y estudios de mejoras combinadas de compilador/arquitectura" . umich.edu . Universidad de Michigan (UM). Archivado del original el 23 de julio de 2012. Consultado el 23 de julio de 2012 .
  2. Kildall, Gary Arlen (mayo de 1972). Optimización global de expresiones durante la compilación (tesis doctoral). Seattle, Washington, EE. UU.: Universidad de Washington , Grupo de Ciencias de la Computación. Tesis n.° 20506, Informe técnico n.° 72-06-02.
  3. Kildall, Gary Arlen (1973-10-01). "Un enfoque unificado para la optimización global de programas" (PDF) . Actas del 1er simposio anual ACM SIGACT-SIGPLAN sobre Principios de lenguajes de programación - POPL '73 . págs. 194–206 . doi : 10.1145/512927.512945 . hdl : 10945/42162 . S2CID 10219496. Archivado del original (PDF) el 29-06-2017 . Recuperado el 20-11-2006 .  ()
  4. 1 2 Freiberger, Paul (1981-10-19). "Los traductores de programas lo hacen literalmente, y a veces en contexto" . InfoWorld - Noticias para usuarios de microcomputadoras . Sección especial: Compatibilidad informática. Vol. 3, n.º 22. Popular Computing, Inc. pág. 19. ISSN 0199-6649 . Recuperado el 15 de enero de 2020. […] "A menos que tengas un esquema de traducción que tenga en cuenta las peculiaridades del microprocesador de destino, no hay manera de que un traductor automático funcione", explica Daniel Davis, programador de Digital Research . "Terminarás con transliteraciones directas ". […] A pesar de todas estas limitaciones, recientemente se han logrado avances en el desarrollo de traductores. En particular, Digital Research ha presentado su traductor de código ensamblador de ocho a dieciséis bits. Basado en la investigación realizada por el presidente de Digital Research, Gary Kildall , el XLT86 parece ofrecer avances con respecto a la tecnología de traducción de software disponible anteriormente. Al igual que Trans de Sorcim y Convert 86 de Intel , el paquete de Kildall traduce código en lenguaje ensamblador de un microprocesador 8080 a un 8086. Sin embargo, Kildall ha aplicado una técnica de análisis de flujo global que considera algunas de las principales limitaciones de otros traductores. El procedimiento analiza el uso de registros y banderas 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 tener en cuenta el contexto durante la traducción del programa. Hasta ahora, uno de los principales problemas de cualquier programa traductor ha sido su incapacidad para ir más allá de la transliteración. Si el nuevo traductor de Digital Research realmente avanza la tecnología hasta el punto de poder considerar el contexto, es posible que proliferen más traductores de software en el mercado de microcomputadoras.    
  5. Wharton, John Harrison (1994-08-01). "Gary Kildall, pionero de la industria, muere a los 52 años: creó los primeros lenguajes para microcomputadoras y sistemas operativos de disco" . Microprocessor Report . 8 (10). MicroDesign Resources Inc. (MDR). Archivado del original el 18 de noviembre de 2016. Recuperado el 18 de noviembre de 2016 .
  6. "Premio SPA al Dr. Gary A. Kildall: Ganador del Premio SPA a la Trayectoria Profesional de 1995" . Software Publishers Association (SPA). 13 de marzo de 1995. Consultado el 21 de diciembre de 2019 en www.digitalresearch.biz.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  7. Swaine, Michael (1997-04-01). "Gary Kildall y el emprendimiento colegiado" . Dr. Dobb's Journal . Archivado del original el 24-01-2007 . Recuperado el 20-11-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. […]
  8. Huitt, Robert; Eubanks, Gordon ; Rolander, Thomas "Tom" Alan ; Laws, David; Michel, Howard E.; Halla, Brian; Wharton, John Harrison ; Berg, Brian; Su, Weilian; Kildall, Scott ; Kampe, Bill (2014-04-25). Laws, David (ed.). "Legacy of Gary Kildall: The CP/M IEEE Milestone Dedication" (PDF) (transcripción de video). Pacific Grove, California, EE. UU.: Computer History Museum . Número de referencia CHM: X7170.2014 . Recuperado el 19 de enero de 2020. […] Rolander : Mencioné antes que a Gary le gustaba abordar un problema como un arquitecto. […] Y dibujaba las imágenes más hermosas de sus estructuras de datos. […] Y cuando terminaba eso […] y estaba convencido de que esas estructuras de datos ahora eran correctas, entraba en un modo de codificación maníaco increíble. Se pasaba hasta 20 horas al día trabajando […] simplemente desaparecía durante esos periodos. En un par de ocasiones, cuando conseguía que algo funcionara por primera vez, podía ser en plena noche. Y todos los que habéis programado habéis visto que, por ejemplo, la primera vez que aparece en pantalla, hay que avisar a alguien. Mi mujer, Lori, os dirá que recibí un par de esas llamadas en mitad de la noche; LOGO fue un ejemplo, XLT 86 fue otro, en las que lo puso en marcha por primera vez y tenía que enviárselo a alguien para que lo viera. Así que daba igual la hora, me llamaba y yo tenía que ir a verlo funcionando. […](33 páginas)
  9. Barry, Tim (1982-04-05). "XLT-86, un programa de utilidad CP/M de Digital Research" . InfoWorld - The Newsweekly for Microcomputer Users . InfoWorld Software Review. Vol. 4, n.º 13. Popular Computing, Inc. pp. 40–41 , 53. ISSN 0199-6649 . Recuperado el 25-01-2020 . […] XLT-86 es un programa traductor analítico escrito en PL/I-80 . Lee todo el programa fuente 8080 , lo ensambla a código máquina , analiza la utilización de registros, memoria y banderas, y emite un programa optimizado en lenguaje ensamblador 8086. […] La traducción del programa se lleva a cabo en un proceso de cinco pasos. Primero, el programa se escanea y se ensambla para producir valores y ubicaciones de símbolos. Segundo, 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 generar el programa fuente 8086. […]    
  10. Kildall, Gary Arlen (1982-04-19). Swaine, Michael ; Freiberger, Paul ; Markoff, John Gregory (eds.). «El fundador de Digital Research analiza su visión del negocio» . InfoWorld - The Newsweekly for Microcomputer Users . Sección especial: CP/M. Vol. 4, n.º 15. Popular Computing, Inc. págs. 23-24 . ISSN 0199-6649 . Consultado el 17 de enero de 2020. [ …] Kildall: […] Hace un año y medio, probablemente dedicaba el 75 % de mi tiempo al negocio y el 25 % a la programación. XLT-86 era un producto en el que estaba trabajando en ese momento, y me llevó nueve meses desarrollarlo. Habría sido un proyecto de tres meses si hubiera podido concentrarme en él. […]    
  11. Kildall, Gary Arlen (junio-julio de 1982). Bunnell, David Hugh ; Edlin, Jim (eds.). "Gary Kildall - El hombre que creó CP/M: El creador de CP/M - Una entrevista exclusiva para PC con el pionero del software Gary Kildall" . PC Magazine . Sistemas operativos. Vol. 1, n.º 3. Software Communications, Inc. págs. 32-38 , 40. Recuperado el 17 de enero de 2020. […] PC: ¿Cuáles son algunas de las complejidades que implica traducir un programa de 8080 a 8086 ? Kildall : Las traducciones directas a nivel del programa fuente se pueden hacer de forma bastante mecánica. Por ejemplo, una instrucción "Add immediate 5" del 8080 se convierte en "Add AL 5" en el 8086, una traducción muy directa de los códigos de operación en sí. La complejidad de la traducción mecánica surge de situaciones como esta: la instrucción DAD H del 8080 toma el registro HL y le suma DE. Para el 8086, la instrucción equivalente sería algo como ADD DX BX, lo cual está bien, no hay problema. Simplemente se dice que el registro DX es igual a HL y BX es igual a DE. El problema es que la instrucción del 8086 tiene el efecto secundario de establecer el indicador de cero, y la instrucción del 8080 no. En la traducción mecánica, se termina haciendo algo como guardar los indicadores, restaurarlos, realizar algunos desplazamientos y rotaciones, etc. Esto añade unas cinco o seis instrucciones adicionales para obtener el mismo efecto semántico. Hay muchas secuencias en el código del 8080 que producen secuencias muy extrañas en el código del 8086; simplemente no se mapean bien debido a los registros de indicadores y cosas por el estilo. La forma en que transferimos el software es algo llamado XLT-86 . Lleva en el mercado unos seis meses. PC: ¿Con "mejor" código te refieres a más pequeño? Kildall: Un veinte por ciento más pequeño que si simplemente tomaras cada código de operación y hicieras 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 tomas un programa 8080, lo trasladas al mundo de 86 bits y haces una traducción XLT-86, verás que es aproximadamente entre un 10 y un 20 por ciento más grande. Con las máquinas de 16 bits es más difícil direccionar 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 se obtiene un aumento tremendo de velocidad en el mundo de 16 bits es porque se ejecutan más códigos de operación en el bus de datos. […]   

Lecturas adicionales

  • Wenzl, Matthias; Merzdovnik, Georg; Ullrich, Johanna; Weippl, Edgar R. (junio de 2019) [febrero de 2019, noviembre de 2018, mayo de 2018]. "Del hack a la técnica elaborada: una revisión sobre la reescritura binaria" (PDF) . ACM Computing Surveys . 52 (3). Viena, Austria: 49:1–49:36. doi : 10.1145/3316415 . S2CID 195357367. Artículo 49. Archivado (PDF) del original el 15 de enero de 2021. Recuperado el 28 de noviembre de 2021 . (36 páginas)

Obtenido de " https://en.wikipedia.org/w/index.php?title=Binary_recompiler&oldid=1320290887 "