So called
Assembly language translators are a class of source-to-source translators converting code from one
assembly language into another, including (but not limited to) across different processor families and
system platforms.
Intel CONV86 Intel marketed their 16-bit processor
8086 to be
source compatible to the
8080, an 8-bit processor. To support this, Intel had an
ISIS-II-based translator from 8080 to 8086 source code named CONV86 (also referred to as CONV-86 and CONVERT 86) available to
OEM customers since 1978, possibly the earliest program of this kind. It supported multiple levels of translation and ran at 2 MHz on an Intel Microprocessor Development System
MDS-800 with 8-inch
floppy drives. According to user reports, it did not work very reliably.
SCP TRANS86 Seattle Computer Products (SCP) offered TRANS86.COM, written by
Tim Paterson in 1980 while developing
86-DOS. The utility could translate Intel 8080 and
Zilog Z80 assembly source code (with Zilog/
Mostek mnemonics) into source code for the Intel 8086 (in a format only compatible with SCP's
cross-assembler ASM86 for
CP/M-80), but supported only a subset of
opcodes, registers and modes, and often still required significant manual correction and rework afterwards. Also, performing only a mere
transliteration, the brute-force
single-pass translator did not carry out any register and jump optimizations. It took about 24 KB of RAM. The SCP version 1 of TRANS86.COM ran on Z80-based systems. Once 86-DOS was running, Paterson, in a
self-hosting-inspired approach, utilized TRANS86 to convert itself into a program running under 86-DOS. Numbered version 2, this was named TRANS.COM instead. Later in 1982, the translator was apparently also available from
Microsoft.
Sorcim TRANS86 Also named TRANS86,
Sorcim offered an 8080 to 8086 translator as well since December 1980. Like SCP's program it was designed to port CP/M-80 application code (in ASM, MAC, RMAC or ACT80 assembly format) to
MS-DOS (in a format compatible with ACT86). In ACT80 format it also supported a few Z80 mnemonics. The translation occurred on an instruction-by-instruction basis with some optimization applied to conditional jumps. The program ran under CP/M-80,
MP/M-80 and
Cromemco DOS with a minimum of 24 KB of RAM, and had no restrictions on the source file size.
Digital Research XLT86 Much more sophisticated and the first to introduce
optimizing compiler technologies into the source translation process was
Digital Research's XLT86 1.0 in September 1981. XLT86 1.1 was available by April 1982. The program was written by
Gary Kildall and translated source code for the Intel 8080 processor (in a format compatible with ASM, MAC or RMAC assemblers) into source code for the 8086 (compatible with ASM86). Using
global data flow analysis on 8080 register usage, the five-phase
multi-pass translator would also optimize the output for code size and take care of calling conventions (CP/M-80
BDOS calls were mapped into BDOS calls for
CP/M-86), so that CP/M-80 and MP/M-80 programs could be ported to the CP/M-86 and
MP/M-86 platforms automatically. XLT86.COM itself was written in
PL/I-80 for CP/M-80 platforms. The program occupied 30 KB of RAM for itself plus additional memory for the
program graph. On a 64 KB memory system, the maximum source file size supported was about 6 KB, so that larger files had to be broken down accordingly before translation. Alternatively, XLT86 was also available for
DEC VAX/VMS. Although XLT86's input and output worked on source-code level, the translator's in-memory representation of the program and the applied code optimizing technologies set the foundation to
binary recompilation.
Others 2500 AD Software offered an 8080 to 8086 source-code translator as part of their XASM suite for CP/M-80 machines with Z80 as well as for
Zilog ZEUS and
Olivetti PCOS systems. Since 1979, Zilog offered a Z80 to
Z8000 translator as part of their PDS 8000 development system.
Advanced Micro Computers (AMC) and 2500 AD Software offered Z80 to Z8000 translators as well. The latter was named TRANS and was available for Z80 CP/M, CP/M-86, MS-DOS and PCOS. The Z88DK development kit provides a Z80 to
i486 source code translator targeting
nasm named "to86.awk", written in 2008 by Stefano Bodrato. It is in turn based on an 8080 to Z80 converter written in 2003 by Douglas Beattie, Jr., named "toz80.awk". In 2021, Brian Callahan wrote an 8080 CP/M 2.2 to MS-DOS source code translator targeting
nasm named 8088ify. == Programming language implementations ==