Comparison of assemblers#6502 assemblers
{{short description|None}}
This is an incomplete comparison of assemblers. Some assemblers are components of a compiler system for a high-level programming 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.
As part of a compiler suite
- GNU Assembler (GAS): GPL: many target instruction sets, including ARM architecture, Atmel AVR, x86, x86-64, RISC-V, Freescale 68HC11, Freescale v4e, Motorola 680x0, MIPS, PowerPC, IBM System z, TI MSP430, Zilog Z80.
- SDAS (fork of ASxxxx Cross Assemblers and 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 its main focus is not machine-dependent code generation; instead a more high-level typed assembly-like intermediate representation is used. Nevertheless for the most common targets the LLVM MC (machine code) project provides an assembler both as an integrated component of the compilers and as an external tool.
- Some other 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 the language, or even included as a library, but aren't always suitable for being used outside of their framework - no command-line tool exists, or only the intermediate representation can be used as their input, or the set of supported targets is very limited.
Single target assemblers
=6502 assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! FOSS ! License ! Host platform |
Atari Assembler Editor
| {{No}} | {{Proprietary}} |
---|
Atari Macro Assembler
| {{No}} | {{Proprietary}} |
EDASM
| {{No}} | {{dunno}} |
[http://k2devel.sourceforge.net/download.html k2asm]
| Andre Kaesmacher, Hauke Brandes, Börje Sieling | {{Yes}} | {{Free|Artistic License}} |
Lisa
| {{No}} | {{Proprietary}} | Apple II |
MAC/65
| {{No}} | {{Proprietary}} |
Merlin
| {{Yes}} | {{Free|Public-domain}} | MOS Technology 6502, WDC 65C02 | Apple II |
[https://juiced.gs/store/opus-ii-software/ ORCA/M]
| {{No}} | {{Proprietary}}, Free for non-commercial use | MOS Technology 6502, WDC 65C02, WDC 65C816 | ProDOS 8/16, GS/OS |
[http://rmac.is-slick.com RMAC]
| James Hammons, George Nakos, Landon Dyer | {{Yes}} | {{Free}} |
SynAssembler
| {{No}} | {{Proprietary}} |
[http://sun.hasenbraten.de/vasm/ VASM]
|Volker Barthelmann, Frank Wille | {{No}} | {{Free}} | various |
[https://www.floodgap.com/retrotech/xa/ xa65]
| Cameron Kaiser, André Fachat | {{Yes}} | GPL | MOS Technology 6502, WDC 65C02, WDC 65C816 | Linux, various |
[https://github.com/pfusik/xasm XASM]
| Piotr Fusik | {{Yes}} | {{Free}} |
=680x0 assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! FOSS ! License ! Host platform ! Development active |
ASM-One Macro Assembler
| {{No}} | {{Free}} | Commodore Amiga | {{no}} |
---|
GAS
| {{Yes}} | {{Free}} | various | {{yes}} |
[http://sun.hasenbraten.de/vasm/ VASM]
|Volker Barthelmann, Frank Wille | {{No}} | {{Proprietary}} | various | {{yes}} |
[http://rmac.is-slick.com RMAC]
| James Hammons, George Nakos, Landon Dyer | {{Yes}} | {{Free}} | Motorola 680x0, MOS Technology 6502 | {{yes}} |
=ARM assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! FOSS ! License ! Host platform ! ARM64 |
GAS
| {{Yes}} | {{GPL-lic}} | various | {{yes}} |
---|
TCCASM
| {{Yes}} | {{LGPL-lic}} | {{yes}} |
[http://sun.hasenbraten.de/vasm/ VASM]
| Volker Barthelmann, Frank Wille | {{No}} | {{Free}} | various | {{no}} |
FASMARM
| revolution, Tomasz Grysztar | {{Yes}} | {{Free|Simplified BSD with weak copyleft}} | Windows, DOS, Linux, Unix-like | {{no}} |
[https://github.com/Kingcom/armips/blob/master/Readme.md ARMIPS]
| Kingcom | {{Yes}} | {{Free|MIT}} | various | {{no}} |
=RISC-V assemblers=
=Mainframe Assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! FOSS ! License ! Host platform |
Assembly Language for Multics (ALM)
| | {{Yes}} | {{Free|MIT}} |
---|
705 Autocoder
| IBM | | {{Free}} | IBM 705 | |
1410/7010 OS Autocoder
| IBM | | {{Free}} | IBM 1410 Processor Operating System |
7070/7074 Autocoder
| IBM | | {{Free}} | |
7080 Autocoder III
| IBM | | {{Free}} | IBM 7080 | IBM 7058 Processor |
COMPASS
| | {{Free}} |
COMPASS
| | {{Free}} |
COMPASS
| | {{Free}} | CDC 6000 series |
Fortran Assembly Program (FAP)
|David E. Ferguson, Donald P. Moore | | {{Free}} |
GCOS Macro Assembly Program (GMAP)
| | {{Free}} | GE-600 series, Honeywell 6000 series | GCOS |
Macro Assembly Program (MAP)
|IBM | | {{Free}} | IBSYS/IBJOB on 709, 704x, 709x |
Symbolic Assembly Program (SAP)
| | {{Free}} | IBM 704 | IBM 704 |
IBM Basic Assembly Language (BAL)
| IBM | | {{Free}} |
ASSIST
| {{Free}} | MVS |
UNIVAC VS/9 Assembler
| Unisys | | {{Proprietary}} | Univac 9060 and 9070 (Similar to IBM System/370) | VS/9 |
BS2000 Assembler H
| Fujitsu | | {{Proprietary}} | Fujitsu Technology Series SE (Similar to IBM System/370) | BS2000 |
[https://sourceforge.net/projects/z390/ z390 Portable Mainframe Assembler]
| Don Higgins | {{Open source|GPL}} | {{Free}} | Simulated IBM System/370 | Simulated MVS |
IBM High-Level Assembler (HLASM)
| IBM | {{n/a}} | {{Proprietary}} |
IBM Assembler D
| IBM | | {{Free}} | IBM OS/360 |
IBM Assembler E
| IBM | | {{Free}} | IBM OS/360 |
IBM Assembler F
| IBM | | {{Free}} |
Assembler G
| University of WaterlooModification of IBM's Assembler F | | {{Free}} | IBM System/360 and others (table-driven) |
IBM Assembler H
| IBM | {{n/a}} | {{Proprietary}} | IBM System/360 and System/370 | IBM OS/360 and successors |
IBM Assembler XF
| IBM | | {{Free}} | numerous |
PL/360
| {{Yes}} | {{Free}} | IBM OS/360 |
Meta-Symbol
| Scientific Data Systems (SDS) | | {{Free}} |
Xerox Assembly Program (AP){{cite book |last1=Xerox Corporation |title=Xerox Assembly Program (AP) |date=1975 |url=https://www.livingcomputers.org/UI/UserDocs/CP-V/4_Xerox_Assembly_Program_Reference.pdf |access-date=June 28, 2023}}
| | {{Free}} | SDS Sigma series, Xerox 500 series | CP-V CP-R |
Meta Assembler (MASM)
| UNIVAC | | {{Free}} |
=POWER, PowerPC, and Power ISA assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! FOSS ! License ! Host platform |
GAS
| {{Yes}} | {{GPL-lic}} | POWER, PowerPC 74xx, PowerPC 970 | All platforms supported by GNU Binutils |
---|
[https://www.audentia-gestion.fr/IBM/PDF/idalangref_pdf.pdf IBM AIX assembler]
| IBM | {{No}} | {{Proprietary}} | POWER | IBM AIX |
[http://sun.hasenbraten.de/vasm/ VASM]
| Volker Barthelmann, Frank Wille | {{No}} | {{Free}} | POWER, 40x, 440, 460, 6xx, 7xx, 7xxx, 860, Book-E, e300 and e500 | various |
=x86 assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! Host platform ! FOSS ! License ! x86-64 ! Development active |
A86/A386
| Eric Isaacson | {{No}} | {{Proprietary}} | {{no}} | {{No}} |
---|
ACK
| Andrew Tanenbaum, Ceriel Jacobs | {{Yes}} | {{Free|BSD since 2003}} | {{no}} | 1985-? {{ref|ACK}} |
IBM ALP
| IBM | OS/2 | {{No}} | {{Proprietary}} | {{no}} | {{No}} |
Intel ASM86
| Intel | DOS | {{No}} | {{Proprietary}} | {{no}} | {{No}} |
AT&T
| AT&T | {{No}} | {{Proprietary}} | {{no}} | {{No|1985-?}}{{ref|ATT}} |
Digital Research RASM-86 Relocating Assembler
| CP/M-86, DOS, Intel's ISIS and iRMX | {{No}} | {{Proprietary}} | {{no}} | {{No|1978-1992}} |
FASM
| Windows, DOS, Linux, Unix-like | {{Yes}} | {{Free|Simplified BSD with weak copyleft}} | {{yes}} | {{Yes}} |
GAS
| Unix-like, Windows, DOS, OS/2 | {{Yes}} | {{GPL-lic}}v3 | {{yes}} | {{Yes|Since 1987}} |
HLA
| Windows, Linux, FreeBSD, macOS | {{Yes}} | {{Free|Public domain}} | {{no}} | {{no}} |
Open Watcom Assembler (HJWASM a.k.a. UASM, JWASM, WASM) | Watcom | Linux, Windows, DOS, FreeBSD, OS/2 | approved by OSI, but not by FSF | {{Free|Sybase Open Watcom Public}} | {{yes}} | {{Yes}} |
MASM
| {{No}} | {{Proprietary|Microsoft EULA}} | {{yes}} | {{Yes|Since 1981}}{{ref|MASM}} |
NASM
| Simon Tatham, Julian Hall, Hans Peter Anvin, et al. | Linux, macOS, Windows, DOS, OS/2 | {{Yes}} | {{Free|BSD}} | {{yes}} | {{Yes}} |
[http://www.smorgasbordet.com/pellesc/ POASM]
| | {{No}} | {{Proprietary|Freeware}} | {{yes}} | {{Yes}} |
Tim Paterson's ASM
| {{No}} | {{Proprietary}} | {{no}} | {{No|[http://www.patersontech.com/dos/manuals.aspx 1979-1983]}} |
TASM
| Borland | {{No}} | {{Proprietary}} | {{no}} | {{?}}{{ref|TASM1}}{{ref|TASM2}} |
TCCASM
| {{Yes}} | {{LGPL-lic}} | {{yes}} | {{No}} |
[http://sun.hasenbraten.de/vasm/ VASM]
| Volker Barthelmann, Frank Wille | various | {{No}} | {{Free}} | {{yes}} | {{Yes}} |
[https://sourceforge.net/projects/asm-86-dos/ 86-Assembler for DOS]
| Stephen Duffy | DOS | {{Yes}} | {{open source | GPL2}} | {{no}} | {{No}} |
Xenix
| Xenix 2.3 and 3.0 (before 1985) | {{No}} | {{Proprietary}} | {{no}} | {{No|1982-1984}} |
[https://github.com/yasm/yasm YASM][https://yasm.tortall.net The Yasm Modular Assembler Project]
| Windows, DOS, Linux, Unix-like | {{Yes}} | {{Free|BSD}} | {{yes}} | {{no}}{{ref|YASMnote}} |
- {{Note|ACK}} Part of the MINIX 3 source tree, but without obvious development activity.
- {{Note|ATT}} 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 a reference for GAS. Still used for The SCO Group's products, UnixWare and OpenServer.
- {{Note|MASM}} Active, supported, but unadvertised.
- {{Note|TASM1}} 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.
- {{Note|TASM2}} 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.
- {{Note|YASMnote}} Last stable version 1.3.0 was released in August 2014, and low maintenance since then: https://github.com/yasm/yasm
=Z80 assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
|+ !Assembler !Developer !Host platform !FOSS !Development active |
Microsoft MACRO-80
|CP/M, ISIS-II, TRSDOS, TEKDOS, MSX-DOS |{{No}} |{{Proprietary|Commercial}} |{{No}} |
---|
Zeus Assembler
|{{No}} |{{Proprietary|Commercial}} |{{No}} |
[http://savannah.nongnu.org/projects/z80asm z80asm]
|Peter Kollner, Paul Flo Williams, John Critchley, Bas Wijnen |{{Yes}} |{{GPL-lic|GNU GPLv3}} |{{No}} |
[https://github.com/z00m128/sjasmplus sjasmplus]
|Sjoerd Mastijn, Aprisobal, Peter Helcmanovský, ... |{{Yes}} |{{Free|BSD}} |{{Yes}} |
[https://github.com/EdouardBERGE/rasm Rasm]
|Berge Edouard |{{Yes}} |{{Free|MIT}} |{{Yes}} |
=Other single target assemblers=
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! FOSS ! License ! Host platform |
Autocoder
| IBM | | {{Free}} | IBM 1401, 1440, 1460 |
Autocoder
| IBM | | {{Free}} | 1410/7010 Operating System |
Babbage
| | {{No}} | {{Proprietary}} |
---|
City & Guilds Mnemonic Code
| City and Guilds of London Institute | {{No}} | ? |
MACRO-10
| Digital Equipment Corporation | | {{Free}} | PDP-10 | PDP-10 |
MACRO-11
| Digital Equipment Corporation | | {{Free}} | PDP-11 | PDP-11 |
VAX MACRO
| Digital Equipment Corporation | | {{Proprietary}} | OpenVMS |
[http://sun.hasenbraten.de/vasm/ VASM]
| Volker Barthelmann, Frank Wille | {{No}} | {{Free}} | Zilog Z80, Motorola 6800 family | various |
GPASM
| James Bowman, Craig Franklin, David Barnett | {{Yes}} | {{GPL-lic}} | many |
MIPS
| | | {{Free}} | MIPS | MIPS |
[https://rgbds.gbdev.io Rednex Game Boy Development System] (RGBDS)
| | {{Yes}} | {{free|MIT License}} | many |
Symbolic Optimal Assembly Program (SOAP)
| IBM | | {{Free}} | IBM 650 | IBM 650 |
Technical Assembly System (TASS)
| | | {{Free}} | IBM 650 | IBM 650 |
Symbolic Programming System (SPS)
| | {{Free}} | IBM 14xx | IBM 1401, 1440, 1460 |
Symbolic Programming System (SPS)
| | | {{Free}} | IBM 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}} |
Sleuth
| | | {{Free}} |
Meta Assembler (MASM)
| | | {{Free}} |
UTMOST
| | | {{dunno}} |
Retargetable/cross-assemblers
class="wikitable sortable" style="font-size: 85%; text-align: center"
! Assembler ! Developer ! FOSS ! License ! Host platform |
[http://john.ccac.rwth-aachen.de:8000/as/ 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, [ | Win32, DOS/DPMI, DOS (no longer maintained), OS/2 (no longer maintained), Linux |
---|
[https://shop-pdp.net/ashtml/asxxxx.php ASxxxx Cross Assemblers]
| Alan R. Baldwin | {{Yes}} | {{GPL-lic}} | 1802, S2650, SC/MP, MPS430, 6100, 61860, 6500, 6800(6802/6808), 6801(6803/HD6303), 6804, 6805, 68HC(S)08, 6809, 68HC11, 68HC(S)12, 68HC16, 740, 78K/0, 78K/0S, 8008, 8008S, 8048(8041/8022/8021), 8051, 8085(8080), AT89LP, 8X300(8X305), DS8XCXXX, AVR, EZ80, F2MC8L/FX, F8/3870, Game Boy(sm83), H8/3xx, Cypress PSoC(M8C), PIC, Rabbit 2000/3000, ST6, ST7, ST8, Z8, Z80(HD64180), and Z280 series |
Notes and references
{{Reflist}}
External links
- [http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Assembler%20Collection.htm List of assemblers running on S100 bus hardware, including CP/M hosted assemblers for 8080 and Z80]
{{X86 assembly topics}}