Comparison of assemblers

Print Print
Reading time 8:40

This is a list of assemblers: computer programs that translate assembly language source code into binary programs. Some assemblers are components of a compiler system for a high level language and may have limited or no usable functionality outside of the compiler system. Some assemblers are hosted on the target processor and operating system, while other assemblers (cross-assemblers) may run under an unrelated operating system or processor. For example, assemblers for embedded systems are not usually hosted on the target system since it would not have the storage and terminal I/O to permit entry of a program from a keyboard. An assembler may have a single target processor or may have options to support multiple processor types. Very simple assemblers may lack features, such as macros, present in more powerful versions.

As part of a compiler suite

  • GNU Assembler (gas): GPL: many target instruction sets including ARM architecture, Atmel AVR, x86, x86-64, Freescale 68HC11, Freescale v4e, Motorola 680x0, MIPS, PowerPC, IBM System z, TI MSP430, Zilog Z80.
  • ASxxxx Cross Assembler (part of the Small Device C Compiler project): GPL: several target instruction sets including Intel 8051, Zilog Z80, Freescale 68HC08, PIC microcontroller.
  • The Amsterdam Compiler Kit (ACK) targets many architectures of the 1980s, including 6502, 6800, 680x0, ARM, x86, Zilog Z80 and Z8000.
  • LLVM targets many platforms, however emits no per-target assembly language, instead more high-level typed intermediate representation assembly-like language used.
  • Some others self-hosted native-targeted language implementations (like Go, Free Pascal, SBCL) have their own assemblers with multiple targets. They may be used for inline assembly inside language, or even included as a library, but not always suitable for standalone application - no command-line tool exists, or only intermediate representation used as a source, or support for targets very limited.

Single target assemblers

6502 assemblers

Assembler Developer FOSS License Instruction set Host platform
Atari Assembler Editor Shepardson Microsystems No Proprietary MOS Technology 6502 Atari 8-bit family
Atari Macro Assembler Shepardson Microsystems No Proprietary MOS Technology 6502 Atari 8-bit family
Lisa Randall Hyde No Proprietary MOS Technology 6502 Apple II series
MAC/65 Optimized Systems Software No Proprietary MOS Technology 6502, WDC 65C02 Atari 8-bit family
Merlin Glen Bredon Yes Public-domain MOS Technology 6502, WDC 65C02 Apple II series
vasm Volker Barthelmann, Frank Wille Free MOS Technology 6502 various
k2asm Andre Kaesmacher, Hauke Brandes, Börje Sieling Yes Artistic License MOS Technology 6502 Linux, Windows, macOS, possibly other Unices
rmac James Hammons, George Nakos, Landon Dyer Yes Free MOS Technology 6502 Linux, Windows, macOS
xasm Piotr Fusik Yes Free MOS Technology 6502 Linux, Windows, macOS

680x0 assemblers

Assembler Developer FOSS License Instruction set Host platform Development active
ASM-One Macro Assembler Rune Gram-Madsen No Free Motorola 680x0 Commodore Amiga No
GNU Assembler GNU Project Yes Free Motorola 680x0 various
vasm Volker Barthelmann, Frank Wille No Proprietary Motorola 680x0 various Yes
rmac James Hammons, George Nakos, Landon Dyer Yes Free MOS Technology 6502 Linux, Windows, macOS Yes

ARM assemblers

Assembler Developer FOSS License Instruction set Host platform
GNU Assembler GNU Project Yes Free ARM various
vasm Free ARM various

IBM mainframe assemblers

Assembler Developer FOSS License Instruction set Host platform
IBM 1410/7010 OS Autocoder IBM Free IBM 1410
IBM 7010
IBM 1410/7010 Operating System
7070/7074 Autocoder IBM Free IBM 7070/7072/7074
7080 Autocoder III IBM Free IBM 7080 IBM 7058 Processor
Symbolic Coding and Assembly Technique
(SCAT)
Share Free IBM 709
7090/7094/7094 II
SHARE Operating System (SOS)
FORTRAN II Assembly Program
(FAP)
IBM Free IBM 709
7090/7094/7094 II
IBM 7090/94 IBSYS
Macro Assembly Program
(MAP)
IBM Free IBM 709
IBM 7040/7044
7090/7094/7094 II
IBM IBSYS/IBJOB
BAL Free IBM System/360 IBM BPS/360
HLASM Proprietary z/Architecture numerous
IBM Assembler D Free IBM System/360 IBM DOS/360
IBM Assembler E Free IBM System/360 IBM OS/360
IBM Assembler F Free IBM System/360 IBM OS/360 and CP-67/CMS
IBM Assembler H Proprietary IBM System/360 and System/370 IBM OS/360 and successors
IBM Assembler XF Free IBM System/370 numerous
PL360 Free IBM System/360 IBM OS/360

POWER, PowerPC, and Power ISA assemblers

Assembler Developer FOSS License Instruction set Host platform
IBM AIX assembler No Proprietary POWER IBM AIX
vasm Free PowerPC various

x86 assemblers

Assembler Developer Operating system FOSS License Development active
A86/A386 Eric Isaacson Windows, DOS No Proprietary No
ACK Andrew Tanenbaum, Ceriel Jacobs Linux, MINIX, Unix-like Yes BSD since 2003 1985-? [1]
IBM ALP IBM OS/2 No Proprietary No
AT&T AT&T Unix System V No Proprietary 1985-?[2]
Digital Research ASM86 Digital Research CP/M-86, DOS, Intel's ISIS and iRMX No Proprietary 1978-1992
FASM Tomasz Grysztar Windows, DOS, Linux, Unix-like Yes BSD with added Copyleft Yes
GAS GNU Project Unix-like, Windows, DOS, OS/2 Yes GNU GPL Since 1987
HLA Randall Hyde Windows, Linux, FreeBSD, macOS Yes Public domain Yes
Open Watcom Assembler
(HJWASM a.k.a. UASM, JWASM, WASM)
Watcom Linux, Windows, DOS, FreeBSD, OS/2 approved by OSI, but not by FSF Sybase Open Watcom Public Yes
MASM Microsoft Windows, DOS, OS/2 No Microsoft EULA Since 1981[3]
NASM Simon Tatham, Julian Hall, Hans Peter Anvin, et al. Linux, macOS, Windows, DOS, OS/2 Yes BSD Yes
Tim Paterson's ASM Tim Paterson 86-DOS, DOS DEBUG No Proprietary 1979-1983
TASM Borland Windows, DOS No Proprietary ?[4][5]
TCCASM Fabrice Bellard Unix-like, Windows Yes LGPL Yes
vasm various Yes Free Yes
86-Assembler for DOS Stephen Duffy DOS Yes GPL2 No
Xenix Microsoft Xenix 2.3 and 3.0 (before 1985) No Proprietary 1982-1984
Yasm[1] Windows, DOS, Linux, Unix-like Yes BSD No[6]
  1. ^ Part of the MINIX 3 source tree, but without obvious development activity.
  2. ^ Developed by Interactive Systems Corporation in 1986 when they ported UNIX System V to Intel iAPX286 and 80386 architectures. Archetypical of ATT syntax because it was used as reference for GAS. Still used for The SCO Group's products, UnixWare and OpenServer.
  3. ^ Home site appears inactive. Also offered as part of FreeBSD Ports, in bcc-1995.03.12.
  4. ^ Active, supported, but unadvertised.
  5. ^ Developed in 1982 at MIT as a cross-assembler, it was picked up by Interactive Systems Corporation in 1983 when they developed PC/IX under IBM contract. The syntax was later used as base for ACK assembler, to be used in MINIX 1.x toolchain.
  6. ^ RosAsm project on WebArchive.org.
  7. ^ Part of the C++Builder Tool Chain, but not sold as a stand-alone product, or marketed since the CodeGear spin-off; Borland was still selling it until then. Version 5.0, the last, is dated 1996.
  8. ^ Turbo Assembler was developed as Turbo Editasm by Uriah Barnett from Speedware Inc (Sacramento, CA) between 1984 and 1987, then later sold to, or marketed by, Borland as their Turbo Assembler.
  9. ^ Last stable version 1.3.0 was released in August 2014, and low maintenance since then: https://github.com/yasm/yasm

x86-64 assemblers

Assembler Developer Operating system FOSS License Development active
FASM Tomasz Grysztar DOS, Unix-like, Windows Yes BSD Yes
GAS GNU Project DOS, OS/2, Unix-like, Windows Yes GNU GPL Yes
MASM Microsoft DOS, OS/2, Windows|Xenix No Commercial Yes
NASM Simon Tatham, Julian Hall, Hans Peter Anvin, et al. DOS, Linux, macOS, OS/2, Windows Yes BSD Yes
Open Watcom Assembler Watcom DOS, FreeBSD, Linux, OS/2, Windows approved by OSI, but not by FSF Sybase Open Watcom Public Yes
POASM Windows, Windows Mobile No Freeware Yes
TCCASM Fabrice Bellard Unix-like, Windows Yes GNU LGPL Yes
Yasm[2] DOS, Unix-like, Windows Yes BSD No

Z80 assemblers

Assembler Developer Operating system FOSS License Development active
Microsoft MACRO-80 Microsoft CP/M, ISIS-II, TRSDOS, TEKDOS, MSX-DOS No Commercial No
Zeus Assembler Crystal Computing No Commercial No
z80asm Unix-like, Windows Yes GNU GPL No

Other

Assembler Developer FOSS License Instruction set Host platform
Assembly Language for Multics (ALM) Yes MIT GE-645
Honeywell 6180
GE-645
Honeywell 6180
The Macroassembler AS Alfred Arnold Free 29xxx, AVR, 65816, ACE, F2MC-8L, F2MC-16L, HMCS400, 6301, 6309, H8/300(H), H8/500, SH7000 / SH7600 / SH7700, HuC6280, PPC403GA, 4004/4040, 8008, MCS-48, MCS-41, MCS-51, MCS-251, MCS-96/196/296, 8080/8085, 8086/80186, i960, CDP1802(A)/1804(A)/1805(A), LatticeMico8, PIC 16C5x, PIC 16C8x, PIC 17C42, MELPS-740, MELPS-7700, MELPS-4500, M16, M16C, 68000 (up to 68040), ColdFire, DSP56000, DSP56300, PowerPC 601/505, M-Core, 6800, 68HC11(K4), 6805, 68HC(S)08, 6809, 68HC12 incl. XGATE, 68HC16, 68RS08, SC/MP, INS807x, COP4, COP8, SC14xxx, µpD7720/7725, µpD77230, µpD78C1x, 75K0, 78K0, 78K2, 78K3, 78K4, V30/35, OLMS-40, OLMS-50, XA, 6502, (W)65(S)C02, 65C19, 80C382, 80C166/167, 2650, 8X30x, ST6, ST7, ST9, 6804, SYM53C8xx, TMS3201x, TMS320C2x, TMS320C20x, TMS320C3x, TMS320C4x, TMS320C5x, TMS320C54x, TMS320C6x, TMS7000, TMS9900, TMS370xxx, MSP430(X), TLCS-900, TLCS-90, TLCS-870, TLCS-47, TLCS-9000, TC9331, KCPSM/KCPSM3 ('PicoBlaze'), Z80, Z180, Z380, Z8, eZ8, MIL STD 1750 Win32, DOS/DPMI, DOS (no longer maintained), OS/2 (no longer maintained), Linux
Babbage No Proprietary GEC 4000 series GEC 4000 series
COMPASS[3] Control Data Corporation No Proprietary CDC mainframe CDC mainframe
MACRO-10 Digital Equipment Corporation Free PDP-10 PDP-10
MACRO-11 Digital Equipment Corporation Free PDP-11 PDP-11
vasm Free Zilog Z80, Motorola 6800 family various
GPASM James Bowman, Craig Franklin, David Barnett Yes GNU GPL PIC microcontroller many
MIPS Free MIPS MIPS
Symbolic Optimal Assembly Program (SOAP) No Proprietary IBM 650 IBM 650
Technical Assembly System (TASS) Free IBM 650 IBM 650
Autocoder[4] Free IBM 705, 14xx, 1410, 7010, 7070, 7072, 7074, 7080 various
Fortran Assembly Program (FAP) Free IBM 709, 704x, 709x Fortran Monitor System, IBSYS
GCOS Macro Assembly Program (GMAP) Free GE-600 series, Honeywell 6000 series GCOS
Macro Assembly Program (MAP) Free IBM 709, 704x, 709x IBSYS/IBJOB on 709, 704x, 709x
Meta-Symbol Free SDS Sigma series BTM, UTS, CP-V
Symbolic Assembly Program (SAP) Free IBM 704 IBM 704
Symbolic Programming System (SPS)[5] Gary Mokotoff Free IBM 14xx, 1620, 1710 IBM 1401, 1440, 1460, 1620, 1710
ASMB, ASBL, NSBL - Numeric op codes,
used for 1900 Operating System Executive
No Proprietary ICL 1900 ICL 1900
GINerator mnemonic opcodes,
used for GEORGE (operating system)
No Proprietary ICL 1900 ICL 1900
PLAN mnemonic opcodes,
used for commercial 1900 programs
No Proprietary ICL 1900 ICL 1900
Single Address Assembly Language (SAAL) Free UNIVAC 1005 UNIVAC 1005
Sleuth Free UNIVAC 1107 EXEC, EXEC II, EXEC 8
Meta Assembler (MASM) Free UNIVAC 1100/2200 series UNIVAC EXEC 8
UTMOST ? UNIVAC III UNIVAC III

Notes and references

  1. ^ The Yasm Modular Assembler Project
  2. ^ The Yasm Modular Assembler Project
  3. ^ COMPASS is a family of assemblers for disparate machines.
  4. ^ Autocoder is actually a family of assemblers for disparate machines.
  5. ^ SPS is actually a family of assemblers for disparate machines.

By: Wikipedia.org
Edited: 2021-06-18 19:38:56
Source: Wikipedia.org