Un traductor de fuente a fuente , compilador de fuente a fuente ( compilador S2S ), transcompilador o transpilador [1] [2] [3] es un tipo de traductor que toma el código fuente de un programa escrito en un lenguaje de programación . como entrada y produce un código fuente equivalente en el mismo lenguaje de programación o en uno diferente. Un traductor de fuente a fuente convierte entre lenguajes de programación que operan aproximadamente en el mismo nivel de abstracción , mientras que un compilador tradicional traduce de un lenguaje de programación de nivel superior a un lenguaje de programación de nivel inferior . Por ejemplo, un traductor de fuente a fuente puede realizar una traducción de un programa de Python a JavaScript , mientras que un compilador tradicional traduce de un lenguaje como C a ensamblador o de Java a código de bytes . [4] Un compilador de paralelización automática frecuentemente tomará un programa de lenguaje de alto nivel como entrada y luego transformará el código y lo anotará con anotaciones de código paralelo (por ejemplo, OpenMP ) o construcciones de lenguaje (por ejemplo, declaraciones de Fortranforall
). [2] [5]
Otro propósito de la compilación de fuente a fuente es traducir el código heredado para usar la próxima versión del lenguaje de programación subyacente o una API que rompa la compatibilidad con versiones anteriores. Realizará una refactorización automática de código , lo cual es útil cuando los programas a refactorizar están fuera del control del implementador original (por ejemplo, convertir programas de Python 2 a Python 3, o convertir programas de una API antigua a la nueva API) o cuando el El tamaño del programa hace que sea poco práctico o requiera mucho tiempo refactorizarlo manualmente.
Los transcompiladores pueden mantener la estructura del código traducido lo más cerca posible del código fuente para facilitar el desarrollo y la depuración del código fuente original o pueden cambiar la estructura del código original tanto que el código traducido no se parezca al código fuente. [6] También existen utilidades de depuración que asignan el código fuente transcompilado al código original; por ejemplo, el estándar JavaScript Source Map [ cita necesaria ] permite mapear el código JavaScript ejecutado por un navegador web a la fuente original cuando el código JavaScript fue, por ejemplo, minificado o producido por un lenguaje transcompilado a JavaScript. [ cita necesaria ]
Los ejemplos incluyen Close Compiler , CoffeeScript , Dart , Haxe , Opal, TypeScript y Emscripten . [7]
Los llamados traductores de lenguaje ensamblador son una clase de traductores de fuente a fuente que convierten código de un lenguaje ensamblador a otro, incluyendo (pero no limitado a) diferentes familias de procesadores y plataformas de sistemas .
Intel comercializó su procesador 8086 de 16 bits para que fuera compatible con el 8080 , un procesador de 8 bits. [8] Para respaldar esto, Intel tenía un traductor basado en ISIS-II del código fuente 8080 a 8086 llamado CONV86 [9] [10] [11] [12] (también conocido como CONV-86 [13] y CONVERT 86 [14] [15] ) disponible para clientes OEM desde 1978, posiblemente el primer programa de este tipo. [nb 1] Admitía múltiples niveles de traducción y funcionaba a 2 MHz en un sistema de desarrollo de microprocesador Intel MDS-800 con unidades de disquete de 8 pulgadas . Según los informes de los usuarios, no funcionó de manera muy confiable. [16] [17]
Seattle Computer Products (SCP) ofreció TRANS86.COM, [15] [18] [19] escrito por Tim Paterson en 1980 mientras desarrollaba 86-DOS . [20] [21] [22] La utilidad podría traducir el código fuente ensamblador de Intel 8080 y Zilog Z80 (con mnemónicos de Zilog/ Mostek ) al código fuente .ASM para Intel 8086 (en un formato solo compatible con el ensamblador cruzado ASM86 de SCP para CP/M-80 ), pero solo admitía un subconjunto de códigos de operación , registros y modos y, a menudo, aún requería importantes correcciones manuales y reelaboraciones posteriores. [23] [20] Además, al realizar solo una mera transliteración , [14] [18] [9] [10] el traductor de fuerza bruta de un solo paso no llevó a cabo ninguna optimización de registro y salto. [24] [25] Se necesitaron unos 24 KB de RAM. [15] La versión 1 de SCP de TRANS86.COM se ejecutó en sistemas basados en Z80. [15] [18] Una vez que 86-DOS se estaba ejecutando, Paterson, en un enfoque inspirado en el autohospedaje , utilizó TRANS86 para convertirse en un programa que se ejecuta en 86-DOS. [22] [18] Versión numerada 2, en su lugar se llamó TRANS.COM. [18] [25] [24] [26] [27] Más tarde, en 1982, el traductor aparentemente también estaba disponible en Microsoft . [15] [28]
También llamado TRANS86, Sorcim también ofreció un traductor 8080 a 8086 desde diciembre de 1980. [29] [14] Al igual que el programa de SCP, fue diseñado para portar el código de aplicación CP/M-80 (en formato ensamblador ASM, MAC, RMAC o ACT80). a MS-DOS (en un formato compatible con ACT86). [29] [15] [30] [31] En formato ACT80 también admitía algunos mnemotécnicos Z80. La traducción se produjo instrucción por instrucción con cierta optimización aplicada a los saltos condicionales. El programa se ejecutó en CP/M-80, MP/M-80 y Cromemco DOS con un mínimo de 24 KB de RAM y no tenía restricciones en el tamaño del archivo fuente. [15] [32]
Mucho más sofisticado y el primero en introducir tecnologías de compilación optimizadas en el proceso de traducción del código fuente fue XLT86 1.0 de Digital Research en septiembre de 1981. XLT86 1.1 estuvo disponible en abril de 1982. [33] El programa fue escrito por Gary Kildall [14] [34 ] [35] [36] y tradujo el código fuente .ASM para el procesador Intel 8080 (en un formato compatible con ensambladores ASM, MAC o RMAC) al código fuente .A86 para el 8086 (compatible con ASM86). Utilizando el análisis de flujo de datos global sobre el uso de registros 8080, [37] [14] [38] [39] el traductor multipaso de cinco fases también optimizaría la salida para el tamaño del código y se encargaría de las convenciones de llamada (CP/M-80 Las llamadas BDOS se asignaron a llamadas BDOS para CP/M-86 ), de modo que los programas CP/M-80 y MP/M-80 pudieran trasladarse a las plataformas CP/M-86 y MP/M-86 automáticamente. El propio XLT86.COM fue escrito en PL/I-80 para plataformas CP/M-80. [40] [15] [33] [41] El programa ocupaba 30 KB de RAM para sí mismo más memoria adicional para el gráfico del programa. En un sistema de memoria de 64 KB, el tamaño máximo de archivo de origen admitido era de aproximadamente 6 KB, [40] [15] [42] [33] , por lo que los archivos más grandes debían dividirse en consecuencia antes de la traducción. [15] [33] Alternativamente, XLT86 también estaba disponible para DEC VAX/VMS . [15] [33] Aunque la entrada y salida de XLT86 funcionaron a nivel de código fuente, la representación en memoria del programa por parte del traductor y las tecnologías de optimización de código aplicadas sentaron las bases para la recompilación binaria . [43] [44] [45]
2500 AD Software ofreció un traductor de código fuente 8080 a 8086 como parte de su suite XASM para máquinas CP/M-80 con Z80, así como para sistemas Zilog ZEUS y Olivetti PCOS . [46]
Desde 1979, Zilog ofrece un traductor Z80 a Z8000 como parte de su sistema de desarrollo PDS 8000. [47] [48] [49] [50] [51] [17] Advanced Micro Computers (AMC) [51] [17] y 2500 AD Software también ofrecieron traductores Z80 a Z8000. [46] Este último se denominó TRANS [52] [53] y estaba disponible para Z80 CP/M, CP/M-86, MS-DOS y PCOS. [46]
El kit de desarrollo Z88DK proporciona un traductor de código fuente de Z80 a i486 dirigido a nasm llamado "to86.awk", escrito en 2008 por Stefano Bodrato. [54] A su vez, se basa en un convertidor de 8080 a Z80 escrito en 2003 por Douglas Beattie, Jr., denominado "toz80.awk". [54]
En 2021, Brian Callahan escribió un traductor de código fuente de 8080 CP/M 2.2 a MS-DOS dirigido a nasm llamado 8088ify. [55]
Las primeras implementaciones de algunos lenguajes de programación comenzaron como transcompiladores, y la implementación predeterminada para algunos de esos lenguajes sigue siendo transcompiladores. Además de la siguiente tabla, un mantenedor de CoffeeScript proporciona una lista de lenguajes que se compilan en JavaScript. [56]
Cuando los desarrolladores quieren cambiar a un idioma diferente conservando la mayor parte del código base existente, podría ser mejor utilizar un transcompilador en lugar de reescribir todo el software a mano. Dependiendo de la calidad del transcompilador, el código puede necesitar o no intervención manual para funcionar correctamente. Esto es diferente de los "lenguajes transcompilados" donde las especificaciones exigen que el código fuente de salida siempre funcione sin modificaciones. Todos los transcompiladores utilizados para portar una base de código esperarán un ajuste manual del código fuente de salida si es necesario lograr la máxima calidad del código en términos de legibilidad y convención de plataforma.
Una canalización de transcompilador es el resultado de la transcompilación recursiva . Al unir varias capas de tecnología, con un paso de transcompilación entre cada capa, la tecnología se puede transformar repetidamente, creando efectivamente una especificación independiente del lenguaje distribuido .
XSLT es una herramienta de transformación de propósito general que se puede utilizar entre muchas tecnologías diferentes para crear una canalización de código derivado .
La transcompilación recursiva (o transpilación recursiva ) es el proceso de aplicar la noción de transcompilación recursiva para crear un canal de transformaciones (a menudo a partir de una única fuente de verdad ) que convierte repetidamente una tecnología en otra.
Al repetir este proceso, se puede convertir A → B → C → D → E → F y luego volver a A (v2). Parte de la información se preservará a través de este canal, de A → A(v2), y esa información (a nivel abstracto) demuestra en qué están de acuerdo cada uno de los componentes A–F.
En cada una de las diferentes versiones que produce el transcompilador, esa información se conserva. Puede adoptar muchas formas y tamaños diferentes, pero cuando regresa a A (v2), después de haber sido transcompilada seis veces en el proceso anterior, la información vuelve a su estado original.
Esta información que sobrevive a la transformación a través de cada formato, de A–F–A(v2), es (por definición) contenido derivado o código derivado .
La transcompilación recursiva aprovecha el hecho de que los transcompiladores pueden mantener el código traducido lo más cerca posible del código fuente para facilitar el desarrollo y la depuración del código fuente original, o bien pueden cambiar tanto la estructura del código original que el texto traducido El código no se parece al código fuente. También existen utilidades de depuración que asignan el código fuente transcompilado al código original; por ejemplo, los mapas de fuentes de JavaScript permiten mapear el código JavaScript ejecutado por un navegador web a la fuente original en un lenguaje transcompilado a JavaScript.
[…] ¡Achtung C - und Basic -Programmierer! […] Jetzt gibt es den B→C TRANSPILER das einzigartige Umwandlungs-Software-System von ARC […] El B→C TRANSPILER übersetzt lauffähige AMIGA -Programme básico en código C compilador. […] Durch Spezialbefehle kann C-Code en Basicprogramme directamente integrado werden. […] Basic-Befehle werden erweitert transpiliert. ( HAM-Modus , IFF , usw. werden unterstützt). […] Mit this Konzept neuester Generation verbindet der B→C TRANSPILER auf einzigartige Weise die Vorteile eines Interpreters mit denen eines Compilers […][1]
[…] El nombre Transpiler pretende sugerir una combinación de transputer y compilador , de la misma manera que transputer fue acuñado a partir de transistor y computadora (es decir, una computadora que también es un componente). […](NB. Utiliza el término transpilador de Occam como sinónimo de un compilador de fuente a fuente que funciona como un preprocesador que toma un programa Occam normal como entrada y deriva un nuevo código fuente de Occam como salida con asignaciones de enlace a canal, etc. .agregado, configurándolo así para que el procesamiento paralelo se ejecute de la manera más eficiente posible en una red de transputadores .)
[…] Prioridad reclamada en virtud del art.
44(D) en la Solicitud del Reino Unido No. 1495953, presentada el 31 de marzo de 1992, Reg.
No. A1495953, de fecha 31 de marzo de 1992, vence el 31 de marzo de 1999.
Para software y programas informáticos (US Cl. 38).
Primer uso 1991-08-01, en el comercio 1991-08-01.(NB. Esta empresa desarrolla productos como VX/BASIC, un transpilador de BASIC a C para DEC VMS . A pesar de su afirmación, el suyo no es el primer uso público del término transpilador; consulte, por ejemplo, el transpilador de BASIC a C de ARC para el Amiga en 1988 y el Occam Transpiler de Concurrent Technology Systems (CTS) en 1989).
[…] El 8086 es compatible con el software del 8080 a nivel de lenguaje ensamblador. […]
[…] Un programa traductor Intel podría convertir programas ensambladores 8080 en programas ensambladores 8086 […]
[…] otros programas completan las herramientas de desarrollo de software disponibles para el
8086
y
el 8088
.
[…] CONV-86 puede realizar la mayor parte del trabajo de conversión necesario para traducir módulos fuente
en
lenguaje ensamblador
8080/8085
a módulos fuente ASM-86.
[…] Para facilitar la conversión de programas en lenguaje ensamblador 8080A/8085A para ejecutarse en la placa iSBC 86/12A, CONV-86 está disponible bajo el
sistema operativo
ISIS-II .[5] [6]
[…] "A menos que tenga un esquema de traducción que tenga en cuenta las peculiaridades del microprocesador de destino, no hay manera 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, últimamente se han logrado avances en el desarrollo de los traductores.
En particular, Digital Research ha presentado 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 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 tiene en cuenta algunos de los principales inconvenientes 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 el programador de Digital Research Davis, el algoritmo que utiliza Kildall permite al traductor considerar el contexto mientras traduce el programa.
Hasta ahora, uno de los principales problemas de 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 hace avanzar la tecnología hasta el punto en que se pueda considerar el contexto, entonces es posible que proliferen más traductores de software en el mercado de las microcomputadoras.
[…]
XLT86 de
Digital Research toma el código fuente estándar
8080
en un formato compatible con ensambladores ASM, MAC o RMAC y convierte el código fuente 8080 en
código fuente
8086 en un formato compatible con ASM86 que opera bajo
CP/M-80
o
CP/M-86
.
Dado que XLT86 está escrito en
PL/I-80
, el traductor puede ejecutarse de forma independiente bajo CP/M-80 o para
desarrollo cruzado
bajo VAX/VMS.
Produce código 8086 optimizado en un proceso
de múltiples pasos
de cinco fases , realizando
un análisis global del flujo de datos
para determinar el uso óptimo del registro.
Aunque no se admiten definiciones de macros, las directivas de ensamblaje condicional sí lo son […] si desea una expansión de macros, puede utilizar un paso a través de MAC o RMAC para producir un archivo PRN que se pueda editar […] para producir un archivo fuente expandido para entrada aceptable para XLT86.
XLT86 no reconoce las instrucciones
Z80
.
XLT86 pasa bucles de repetición al código fuente 8086.
XLT86 analiza el programa fuente en su totalidad, determinando la
estructura del bloque
y el uso de registros/banderas.
A partir de esta información, traduce el código al código ensamblador 8086 de forma optimizada.
El algoritmo de decisión para cada tipo de instrucción se proporciona en […] el manual […] El mapeo de registros generalmente sigue […] con una relación vaga entre el 8086
AX
y el 8080
PSW
;
la relación exacta se determina a partir del uso del registro en el
momento de la traducción
.
Hay muchas opciones
de tiempo de ejecución
disponibles para controlar el proceso de traducción, tanto en la línea de comando como incrustadas en el texto fuente de 8080.
[…] XLT86 es un programa sofisticado que hace un trabajo razonable al optimizar la traducción del código fuente 8080 al código fuente 8086.
BDOS
Las llamadas desde CP/M-80 se asignan a llamadas BDOS que son compatibles con CP/M-86. XLT86 tiene características especiales para manejar la traducción de instrucciones JMP y CALL condicionales en código fuente 8080. En las instrucciones 8080, las instrucciones JMP y CALL son capaces de alcanzar cualquier dirección dentro de la región de 64 Kbytes. Las instrucciones JMP condicionales 8086 pueden alcanzar solo 128 bytes en cada lado del registro IP […]. XLT86 examina el objetivo del JMP condicional. Si no se puede alcanzar el objetivo, XLT86 cambia el sentido del JMP condicional y salta un JMP largo hasta la dirección de destino. Dado que no hay instrucciones CALL o RET condicionales en el 8086, se cambia el sentido de la condición y se realiza un JMP condicional corto para omitir una CALL o RET incondicional. […] los registros de segmento permiten la separación de regiones de código y datos. […] XLT86 examina una expresión y determina el segmento adecuado para la instrucción particular. […][7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] (13 páginas)
[…] El ensamblador 8086
original
se ejecutó en un
sistema de desarrollo MDS-80 equipado con
8080 .
Uno de los primeros productos fue un traductor de nivel de fuente 8080 a 8086.
Recuerdo que la velocidad de traducción era extraordinariamente lenta.
[…] nuestro vendedor se ofreció a realizar una prueba de conversión y verificación en la oficina de ventas local […] Nosotros […] comenzamos el trabajo en la serie
ISIS-II
MDS 200 allí; incluso tenían un disco duro, que era un opción escandalosamente cara para un MDS […] todavía cruje cuando nos fuimos a dormir.
A la mañana siguiente todavía no estaba terminado […] Aproximadamente 2 semanas después, después de que los chicos del software de
Intel
echaron un vistazo al traductor, Ed regresó con el programa traducido.
Era aproximadamente un 50% más grande que la versión
8085
original , lo que en cierto modo iba en contra de las afirmaciones de Intel sobre el traductor.
[…]
[…]
Intel
tenía un traductor alojado en ISIS del código
8080
al
8086
.
Recuerdo haber pasado un día muy frustrante en la oficina de ventas local de Intel con un fragmento de muestra del código 8080 (un paquete básico de punto flotante
BCD
para el 8080) y esperar horas a que el traductor terminara su trabajo, y regresar a casa decepcionado. .
Aproximadamente una semana después, recibí una llamada informándome que finalmente habían descubierto los errores y podía retomar mi programa traducido.
Dicho programa era más de la mitad del tamaño del original en términos de bytes de objeto.
En aquel entonces estaba un poco escéptico ante la afirmación de Intel de que el código 8086 era mucho más compacto que su contraparte 8080.
Y de todos modos la maldita cosa no funcionó cuando la pusieron a prueba.
[…] Había otros 80 a 86 traductores para
CP/M
.
Recuerdo que
Sorcim
tenía uno.
AMC
también
tenía un traductor
Z80
a
Z8000 .
[…] El traductor [Intel] tenía varios niveles de traducción […] estaba el "literal", preservando la operación detallada […] era
ISIS-II
, corriendo en un MDS-800, a, qué, 2 MHz con 8 " disquetes. […]
[…]
Tim Paterson
[…] dijo lo siguiente sobre su ensamblador
8086
que escribió mientras estaba en
SCP
: "El ensamblador 8086 que escribí originalmente estaba en
lenguaje ensamblador
Z80 y se ejecutaba bajo
CP/M
. Creo que se distribuyó con SCP Tarjeta CPU 8086 como ASM86. También escribí un traductor que convertía el código fuente Z80 a código fuente 8086 ineficiente pero viable (
Intel
promovió esta idea con una tabla de traducción publicada). Esto se llamó TRANS86 y también fue escrito en ensamblaje Z80 para CP/M. . Una vez funcionando
DOS
, apliqué el traductor a ASM86 (y a sí mismo) para crear versiones 8086 que corrían bajo DOS. No tengo el historial de cambios frente a mí […], pero creo que las versiones >= 2 marcadas la versión traducida (DOS). Si algún historial muestra números de versión <2, esa era la versión CP/M".
[…]
[…]
Criterios de diseño de MS
-DOS […] El principal requisito de diseño de MS-DOS era
la compatibilidad de traducción
CP/M-80
, lo que significa que, si un programa
8080
o
Z80
para CP/M se tradujera para el
8086
según
Intel
' Según las reglas publicadas, ese programa se ejecutaría correctamente en MS-DOS.
Hacer que la compatibilidad de traducción del CP/M-80 fuera un requisito sirvió para promover el rápido desarrollo del software 8086, en el que, naturalmente,
Seattle Computer
estaba interesado. Hubo un éxito parcial: los desarrolladores de software que optaron por traducir sus programas CP/M-80 descubrieron que De hecho, se ejecutaron en MS-DOS, a menudo en el primer intento.
Desafortunadamente, muchos de los desarrolladores de software con los que Seattle Computer habló en los primeros días prefirieron simplemente ignorar MS-DOS.
Hasta que se anunció
la
computadora personal IBM , estos desarrolladores creían que
CP/M-86
sería el sistema operativo de las computadoras 8086/8088.
[…]
[21] [22]
[…] 1. Lea el archivo de código fuente
Z80
escrito en formato
CP/M
y conviértalo al formato
86-DOS
.
2. El programa traductor traduce el código fuente Z80 al
código fuente
8086 .
3. El ensamblador residente ensambla el código fuente 8086 traducido en
código objeto
8086 .
4. Corrección y optimización menor de la mano.
(Una traducción reciente del programa 19K Z80 nos llevó alrededor de cuatro horas arreglarla. ¡Incluso sin optimización, funcionó dos veces más rápido que el original! […])[23]
[…] Para lograr que los principales desarrolladores de software transfieran sus productos del
8080
/
Z80
al
8086
, decidí que teníamos que hacerlo lo más fácil posible.
Ya había escrito un traductor de código fuente de Z80 a 8086 (alojado en 8080 y
CP/M
).
Mi plan era que ejecutar un programa 8080 CP/M a través del traductor sería el único trabajo requerido por los desarrolladores de software para portar el programa al 8086. En otras palabras, la interfaz utilizada por las aplicaciones para solicitar servicios del sistema operativo sería exactamente la misma. como CP/M después de aplicar las reglas de traducción.
[…]
[…]
Compatibilidad de traducción
CP/M […] Para que
DOS
tenga éxito, sería necesario escribir aplicaciones útiles (como procesadores de textos) para él.
Me preocupaba que
SCP
pudiera tener problemas para persuadir a los autores de software de aplicación para que se esforzaran en crear una versión DOS de sus programas.
Pocas personas habían comprado la computadora de 16 bits de SCP, por lo que la base instalada era pequeña.
Sin las aplicaciones no habría muchos usuarios y sin los usuarios no habría muchas aplicaciones.
[…] Mi esperanza era que al facilitar al máximo la transferencia de aplicaciones de 8 bits existentes a nuestra computadora de 16 bits, conseguiríamos que más programadores dieran el paso.
Y me pareció que la compatibilidad de traducción CP/M era lo que haría el trabajo lo más fácil posible.
Intel
había definido reglas para traducir programas de 8 bits a programas de 16 bits;
La compatibilidad de traducción de CP/M significa que cuando la solicitud de un programa a CP/M pasó por la traducción, se convertiría en una solicitud equivalente a DOS.
[…] Así que hice de la compatibilidad de traducción CP/M un objetivo de diseño fundamental.
Esto me obligó a crear una interfaz de programa de aplicación muy específica que implementara la compatibilidad de traducción.
No consideré que esta fuera la API principal; de hecho, había otra API más adecuada para el mundo de 16 bits y que tenía más capacidades.
Ambas API utilizaron construcciones definidas por CP/M (como el "
Bloque de control de archivos
");
la API de compatibilidad tenía que hacerlo y no vi ninguna razón para definir algo diferente para la API principal.
[…] Yo mismo aproveché la compatibilidad de traducción.
Las herramientas de desarrollo que había escrito, como el ensamblador, eran originalmente programas de 8 bits que se ejecutaban bajo CP/M (
CDOS
).
Los pasé por el traductor y se me ocurrieron programas de 16 bits que se ejecutaban en DOS.
Estas herramientas traducidas se incluyeron con DOS cuando las envió SCP.
Pero no creo que nadie más haya aprovechado este proceso.
[…]
[…] El traductor
Seattle Computer Products
Z80
a
8086
se ejecuta en el Z80 bajo
CP/M
.
Acepta como entrada un archivo fuente Z80 escrito usando mnemónicos
Zilog
/
Mostek
y lo convierte a un archivo fuente 8086 en un formato aceptable para nuestro ensamblador cruzado 8086.
Para traducir un archivo, simplemente escriba TRANS86 <nombre de archivo>.<ext>.
Independientemente de la extensión original, el archivo de salida se llamará <nombre de archivo>.A86 y aparecerá en la misma unidad que el archivo de entrada.
Se incluye un archivo llamado TRNTEST.Z80 para demostrar el traductor.
No se traduce todo el lenguaje ensamblador del Z80.
[…]
[24]
[…] El traductor de código fuente puede traducir la mayor parte del código fuente
Z80
a
código fuente
8086 aceptable para el ensamblador después de una pequeña corrección manual.
Esto proporciona una forma relativamente rápida y sencilla de transportar programas entre procesadores.
[…] Archivo TRANS […] El traductor de código fuente Z80 a 8086, llamado por este comando, es esencialmente idéntico a nuestra versión que se ejecuta en el Z80, que se describe en la parte posterior del manual del ensamblador.
Las únicas diferencias: 1. El traductor se llama TRANS, no TRANS86, y se ejecuta en el 8086 bajo
86-DOS
, no en el Z80 bajo
CP/M
.
2. La extensión del archivo de salida es "ASM", no "A86".
[…][26]
[…] Una impresionante y útil variedad de utilidades de desarrollo de software es una característica estándar de
MS-DOS
.
Un programa que traduce código
8080
o
Z80
en código fuente
8086
, un vinculador y un tiempo de ejecución de biblioteca se combinan con un potente ensamblador para brindarle al programador todo lo necesario para aprovechar al máximo el procesador de 16 bits de la PC.
El programa de traducción MS-DOS permite al usuario traducir código desarrollado bajo
CP/M-80
o
SB-80
[…] sistema operativo de 8 bits […] a
MS-DOS 1.2
o
2.0
.
Es posible que sea necesario realizar algunas modificaciones más allá de la simple traducción para que los programas se ejecuten en sistemas de 16 bits, por lo que sugiero que esta herramienta sea utilizada principalmente por un usuario técnicamente capacitado.
[…]
[…] La semana pasada tuvo lugar la reunión
semestral de intercambio de computadoras de California
.
Este evento está organizado por John Craig […]
Sorcim
[…] estaba debutando […] nuevos productos en la feria […] Su otro producto fue TRANS-86.
TRANS-86 tomará cualquier
archivo de código fuente
8080
/
8085
/
Z-80
compatible con
CP/M y lo traducirá al código
8086
.
Luego puede ensamblar el nuevo archivo con ACT-86.
[…]
[…] ¿POR QUÉ?
FLEXIBILIDAD.
La CPU 85/88 de CompuPro
ejecuta CP/M 80, 86, MP/M II y MP/M 86. ¡Ofrecemos WORDSTAR dBASE II SUPERCALC una gran cantidad de idiomas, traductores de 8080 a 8088 y más!
COMPATIBILIDAD.
Nuestros sistemas pueden utilizar utilidades CP/M 2.2 para escribir programas para IBM PC.
Simplemente crea la fuente 8088 (escríbela con tu editor CP/M 80 favorito o tradúcela con TRANS 86 de
Sorcim
), ensambla tu fuente (con ACT86 de Sorcim), vincula tu archivo hexadecimal (con LOAD de CP/M 80). comando), tradúzcalo a la PC IBM (con el programa CPM-IBM de G&G) y ejecútelo en su PC IBM.
¡Este procedimiento NO requiere MS-DOS!
[…] ¿POR QUÉ?
FLEXIBILIDAD.
La CPU 85/88 de
CompuPro ejecuta CP/M 80 y 86 o MS-DOS.
Ofrecemos WORDSTAR, dBASE II, TRANS86, XLT86, ACT86, SUPERCALC, CBASIC, MBASIC, MFORTRAN y más.
[…][28] [29]
[…]
Sorcim
acaba de concretar la compra de
ISA
.
[…] También tienen un traductor 8080 a 8086 – Trans-86 – operativo desde hace más de un año […]
[…] XLT-86 1.1 […] XLT-86 es un programa traductor analítico escrito en
PL/I-80
.
Lee todo el programa fuente 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 .
[…] También existe una versión de XLT-86 para aquellos que tienen acceso a un
VAX 11/750
o
11/780
.
Esta versión puede traducir programas mucho más grandes.
También cuesta $8000.
[…] Si bien el traductor agrega algunas etiquetas y lo equipara con el programa fuente como parte de la traducción, todos los comentarios y etiquetas del programa originales se pasan intactos al programa traducido.
[…] La traducción del programa se desarrolla en un proceso de cinco pasos.
Primero, el programa se escanea y ensambla para producir valores y ubicaciones de símbolos.
En segundo lugar, se analiza la estructura del programa 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 del bloque
y los datos
de asignación de registros
se recopilan en un listado para el usuario.
Quinto, la información de flujo y el programa fuente se utilizan para producir el
programa fuente
8086 .
[…]
[…] 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 hacerlo.
Habría sido un proyecto de tres meses si hubiera podido concentrarme en él.
[…]
[…] PC: ¿Cuáles son algunas de las complejidades involucradas en traducir un programa del formato
8080
al
8086
?
Kildall
: Las traducciones directas a nivel del programa fuente se pueden realizar de forma prácticamente mecánica.
Por ejemplo, una instrucción 8080 "Agregar 5 inmediatos" se convierte en "Agregar AL 5" en el 8086: una traducción muy sencilla de los propios códigos de operación.
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 así como ADD DX BX, lo cual está bien, no hay problema en particular.
Simplemente dice que el registro DX es el mismo que el de HL y el BX el mismo que el DE.
El problema es que la instrucción 8086 tiene el efecto secundario de establecer el indicador cero, y la instrucción 8080 no.
En la traducción mecánica, terminas haciendo algo como guardar las banderas, restaurarlas, hacer algunos cambios y rotaciones, etc.
Estos añaden unas cinco o seis instrucciones adicionales para conseguir 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 algo llamado XLT-86.
Han pasado seis meses más o menos.
PC: ¿Por código "mejor" te refieres a más pequeño?
Kildall: 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 toma un programa 8080, lo mueve a 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 se obtiene un tremendo aumento de velocidad en el mundo de 16 bits es porque se ejecutan más códigos de operación a través del bus de datos.
[…]
[…]
Rolander
: Mencioné antes que a
Gary
le gustaba abordar un problema como arquitecto.
[…] Y hacía los dibujos más bellos 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 increíblemente maníaco.
Simplemente iba hasta 20 horas al día […] simplemente se ausentaba durante esos períodos de tiempo.
En un par de esas ocasiones, cuando algo funcionaba por primera vez, podrí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, tienen que decírselo a alguien.
Mi esposa Lori le dirá que recibí 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 pedirle a alguien que lo viera.
Así que no importaba la hora que fuera, él me llamaría, tendría que venir y verlo funcionar.
[…][30] [31] (33 páginas)
[…] Digital Research
ya dispone de un traductor de código ensamblador de 8 a 16 bits
.
Llamado XLT86, está diseñado para ayudar a facilitar el lento proceso de conversión de
productos de software
CP/M de microcomputadoras basadas en
8080
a
8086
.
XLT86 se puede utilizar para traducir cualquier programa en lenguaje ensamblador que sea compatible con el formato ensamblador ASM, MAC o RMAC de Digital Research.
El traductor de programas XLT86 primero lee un programa en lenguaje ensamblador 8080 y luego produce un archivo de salida que contiene declaraciones en lenguaje ensamblador 8086 aceptables para el ensamblador ASM-86 de Digital Research.
A diferencia de otros convertidores de código 8086 que traducen una única instrucción 8080 en hasta diez instrucciones 8086, XLT86 realiza un
análisis exhaustivo del flujo de datos
para determinar el uso de registros en todo el programa original.
La información recopilada a través de este análisis se utiliza durante la traducción del programa para eliminar operaciones innecesarias de guardar y restaurar indicadores.
"El programa 8086 resultante es más simple y compacto que los programas equivalentes producidos por otros traductores", según Curt Geske, del grupo de marketing Digital Research.
"Además, XLT86 permite a los OEM, usuarios finales y proveedores de software preservar su inversión en programas de lenguaje ensamblador basados en 8080 al cambiar a computadoras basadas en 8086 de 16 bits, reduciendo el esfuerzo de conversión".
Los programas traducidos por XLT86 se ejecutan tanto en
CP/M-86
como
en MP/M-86
[…] XLT86 está disponible de inmediato.
Funciona en cualquier sistema CP/M o
MP/M
de 8 bits , o bajo el
sistema operativo
VMS para su uso en
minicomputadoras
de la serie
VAX
de Digital Equipment Corporation
.
La versión CP/M tiene un precio de 150
dólares
. La versión VAX se vende por 8.000 dólares.
[…]
[…] El programa XLT86 ocupa aproximadamente 30K bytes de memoria principal.
El resto de la memoria, hasta la base de
CP/M
, almacena el gráfico del programa que representa el programa 8086 que se está traduciendo […] Un sistema CP/M de 64K permite la traducción de
8080
programas de hasta aproximadamente 6K.
[…][32] [33]
[…] Irónicamente, muchas de las técnicas en las que
Gary
fue pionero se están redescubriendo ahora, diez años después.
Apple
y
DEC
están promocionando
la recompilación binaria
como una "nueva" tecnología para portar software existente a la arquitectura
PowerPC
o
Alpha
.
En realidad, DRI introdujo un recompilador binario de
8080
a
8086
a principios de los años 1980.
[…]
[…]
Kildall
fundó
Digital Research, Inc.
(DRI) en 1976, que ahora forma parte de
Novell
.
[…] En la década de 1980, DRI introdujo un
recompilador binario
.
[…]
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
.
[…]
[…] Ensamblador 8086/88 con traductor $99.50 Disponible para MSDOS, PCDOS o CP/M-86 […] Este paquete también incluye […] un traductor de código fuente 8080 a 8086 (sin límite en el tamaño del programa a traducir) [… ] Paquete de desarrollo cruzado Z-8000 $ 199,50 […] Este potente paquete incluye un traductor de código fuente en lenguaje ensamblador Z-80/8080 a Z-8000 […] Los traductores proporcionan código fuente Z-8000 desde Intel 8080 o Zilog Z-80 código fuente.
El código fuente Z-8000 utilizado por estos paquetes está en la sintaxis única 2500AD utilizando mnemónicos de Zilog diseñados para facilitar la transición de la escritura de código Z-80 a Z-8000 […] 8086 y Z-8000 XASM incluyen traductores de código fuente [… ](NB. 8086/88 XASM disponible para Z-80 CP/M, Zilog System 8000 UNIX , Olivetti M-20 PCOS ; Z-8000 XASM para Z-80 CP/M, MS-DOS, CP/M-86, Olivetti M-20 SOP.)
[…]
Zilog, Inc.
ha introducido una serie de sistemas de desarrollo de productos (PDS) modulares y ampliables para diseños de microcomputadoras basados en
Z8
,
Z80
y
Z8000
.
Las cuatro versiones del sistema PDS 8000 (modelos 10, 15, 25 y 30) tienen […] Una característica estándar de cada sistema es un paquete de desarrollo de software Z8000, que incluye la rutina de administración de archivos
ZDOSII
, PLZ/ASM de alto nivel. ensambladores estructurados, un traductor Z80/Z8000 y un macroprocesador Z8000 L y MACP.
[…] Los modelos 10 y 25 tienen las mismas especificaciones que los modelos 15 y 30, respectivamente.
pero el 10 y el 25 no incluyen el módulo de desarrollo Z8000.
El PDS Model 10 tiene un precio de 10.485 dólares;
el Modelo 15 a $11,995;
el Modelo 25 a 20.000 dólares;
y el Modelo 35 a 21.500 dólares.
Los cuatro sistemas están disponibles 30 días después de la recepción del pedido.
[…]
[…] Tabla 1. Características del microprocesador de 16 bits […]
Zilog
8000 […] Software […] Zilog espera admitir
Z8000
con traductores para PLZ,
BASIC
,
COBOL
y
FORTRAN
.
Esto permitirá la conversión del código
Z80
al código Z8000, ya que el conjunto Z8000 está superconjunto a Z80.
[…]
[…] TRANSLADOR Z8000: Proporciona un medio rápido para convertir un
programa de lenguaje ensamblador
Z80 existente al código
Z8000
y al formato de programa PLZ/ASM.
[…][34] [35]
[…]
Digital Research
también ha anunciado planes para una
versión
Z8000 de
CP/M
.
El software de aplicación se trasladará al Z8000 cuando haya más software de desarrollo disponible.
Se necesita
un traductor disponible comercialmente de
Z80 a Z8000.
[…]
[…] tanto
Zilog
como
AMC
ofrecieron programas de traducción
de Z80
a
Z8000
.
Al igual que el traductor
Intel
8080
a
8086
, resultó en una hinchazón inmediata a menos que estuviera dispuesto a optimizar manualmente el resultado.
Gran parte del código MS-DOS inicial se tradujo automáticamente y se modificó el código 8080 CP/M.
Sé que gran parte de
SuperCalc
para PC fue, por ejemplo.
Las primeras versiones (por ejemplo, 3.3) de
Wordstar
para DOS probablemente también lo eran.
[…] Había traductores de código fuente de Z80 a Z8000, pero no era un proceso sencillo (modos "estrictos" y "relajados"; a veces una instrucción de Z80 a varias instrucciones de Z8000).
El 8086 está mucho más cerca del 8080 que el Z8000 del Z80.
[…]
[…] Pasmo es un ensamblador cruzado Z80 […] que […] puede generar código objeto en los siguientes formatos: binario sin formato, Intel HEX , PRL para CP/M Plus RSX , Plus3Dos ( disco Spectrum +3 ), TAP, TZX y CDT ( imágenes de cinta de emuladores de Spectrum y Amstrad CPC ), AmsDos (disco de Amstrad CPC) y MSX (para usar con BLOAD desde disco en Basic). A partir de la versión 0.5.0 […] también puede generar código 8086 a partir de fuentes Z80, en formato binario para archivos COM Ms-dos o en formato CP/M 86 CMD . […][42] [43]
[…] En cambio, ejecuta programas escritos en lenguajes de alto nivel como BASIC y C (se están trabajando en un compilador Pascal y un traductor de 8088 a Z8000. […]y Ciarcia, Steve (junio de 1984). "Trump Card - Parte 2: Software - Compiladores TBASIC y C y un ensamblaje" (PDF) . BYTE : el diario de los pequeños sistemas . Bodega del Circuito de Ciarcia. vol. 9, núm. 6. McGraw-Hill, Inc. págs. 115-122. ISSN 0360-5280 . Consultado el 29 de enero de 2020 .
[…] Espero que pronto estén disponibles traductores de código objeto para conversiones de Z80 a Z8000 y de 8088 a Z8000 […], también disponible como Ciarcia, Steve (1990). "Trump Card - Parte 1: Hardware - Acelere su PC IBM con potencia de coprocesamiento de 16 bits y Parte 2: Software - Compiladores TBASIC y C y un ensamblaje". En Gonneau, Daniel; Bernardi, Fred; Ausburn, Richard (eds.). Bodega del Circuito de Ciarcia . vol. 7. Compañía editorial McGraw-Hill . págs. 138–152, 153–160. ISBN 0-07-010969-9. Archivado desde el original el 1 de febrero de 2020 . Consultado el 29 de enero de 2020 .[44]