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.
Assembler | Developer | FOSS | License | Instruction set | Host platform | Development active |
---|---|---|---|---|---|---|
ASM-One Macro Assembler | Rune Gram-Madsen | No | Free | Motorola 680x0 | Commodore Amiga | No |
GAS | GNU Project | Yes | Free | Motorola 680x0 | various | Yes |
VASM | Volker Barthelmann, Frank Wille | No | Proprietary | Motorola 680x0 | various | Yes |
RMAC | James Hammons, George Nakos, Landon Dyer | Yes | Free | Motorola 680x0, MOS Technology 6502 | Linux, Windows, macOS | Yes |
Assembler | Developer | FOSS | License | Host platform | ARM64 |
---|---|---|---|---|---|
GAS | GNU Project | Yes | GNU GPL | various | Yes |
TCCASM | Fabrice Bellard | Yes | GNU LGPL | Unix-like, Windows | Yes |
VASM | Volker Barthelmann, Frank Wille | No | Free | various | No |
Assembler | Developer | FOSS | License | Instruction set | Host platform |
---|---|---|---|---|---|
GAS | GNU Project | Yes | GNU GPL | POWER, PowerPC 74xx, PowerPC 970 | All platforms supported by GNU Binutils |
IBM AIX assembler | IBM | No | Proprietary | POWER | IBM AIX |
VASM | Volker Barthelmann, Frank Wille | No | Free | POWER, 40x, 440, 460, 6xx, 7xx, 7xxx, 860, Book-E, e300 and e500 | various |
Assembler | Developer | Host platform | FOSS | License | Development active |
---|---|---|---|---|---|
Microsoft MACRO-80 | Microsoft | CP/M, ISIS-II, TRSDOS, TEKDOS, MSX-DOS | No | Commercial | No |
Zeus Assembler | Crystal Computing | ZX Spectrum | No | Commercial | No |
z80asm | Peter Kollner, Paul Flo Williams, John Critchley, Bas Wijnen | Unix-like, Windows | Yes | GNU GPL | No |
sjasmplus | Sjoerd Mastijn, Aprisobal, Peter Helcmanovský, ... | Unix-like, Windows | Yes | BSD | Yes |
Rasm | Berge Edouard | Unix-like, Windows | Yes | MIT | Yes |
Assembler | Developer | FOSS | License | Instruction set | Host platform |
---|---|---|---|---|---|
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 | |
ASxxxx Cross Assemblers | Alan R. Baldwin | Yes | GNU GPL | 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 | Win32, DOS, Linux, Android |
In computer programming, assembly language, often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence between the instructions in the language and the architecture's machine code instructions. Assembly language usually has one statement per machine instruction (1:1), but constants, comments, assembler directives, symbolic labels of, e.g., memory locations, registers, and macros are generally also supported.
A complex instruction set computer is a computer architecture in which single instructions can execute several low-level operations or are capable of multi-step operations or addressing modes within single instructions. The term was retroactively coined in contrast to reduced instruction set computer (RISC) and has therefore become something of an umbrella term for everything that is not RISC, where the typical differentiating characteristic is that most RISC designs use uniform instruction length for almost all instructions, and employ strictly separate load and store instructions.
In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers machine code is "the binary representation of a computer program which is actually read and interpreted by the computer. A program in machine code consists of a sequence of machine instructions ."
Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named after French mathematician, philosopher and physicist Blaise Pascal.
Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for the programming language Pascal running on the operating systems CP/M, CP/M-86, and DOS. It was originally developed by Anders Hejlsberg at Borland, and was notable for its very fast compiling. Turbo Pascal, and the later but similar Turbo C, made Borland a leader in PC-based development tools.
Single instruction, multiple data (SIMD) is a type of parallel processing in Flynn's taxonomy. SIMD can be internal and it can be directly accessible through an instruction set architecture (ISA), but it should not be confused with an ISA. SIMD describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously.
The Netwide Assembler (NASM) is an assembler and disassembler for the Intel x86 architecture. It can be used to write 16-bit, 32-bit (IA-32) and 64-bit (x86-64) programs. It is considered one of the most popular assemblers for Linux and x86 chips.
The Motorola 68000 series is a family of 32-bit complex instruction set computer (CISC) microprocessors. During the 1980s and early 1990s, they were popular in personal computers and workstations and were the primary competitors of Intel's x86 microprocessors. They were best known as the processors used in the early Apple Macintosh, the Sharp X68000, the Commodore Amiga, the Sinclair QL, the Atari ST and Falcon, the Atari Jaguar, the Sega Genesis and Sega CD, the Philips CD-i, the Capcom System I (Arcade), the AT&T UNIX PC, the Tandy Model 16/16B/6000, the Sun Microsystems Sun-1, Sun-2 and Sun-3, the NeXT Computer, NeXTcube, NeXTstation, and NeXTcube Turbo, early Silicon Graphics IRIS workstations, the Aesthedes, computers from MASSCOMP, the Texas Instruments TI-89/TI-92 calculators, the Palm Pilot, the Control Data Corporation CDCNET Device Interface, the VTech Precomputer Unlimited and the Space Shuttle. Although no modern desktop computers are based on processors in the 680x0 series, derivative processors are still widely used in embedded systems.
Originally, the word computing was synonymous with counting and calculating, and the science and technology of mathematical calculations. Today, "computing" means using computers and other computing machines. It includes their operation and usage, the electrical processes carried out within the computing hardware itself, and the theoretical concepts governing them.
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running. For example, a compiler that runs on a PC but generates code that runs on Android devices is a cross compiler.
LLVM is a set of compiler and toolchain technologies that can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. The name LLVM originally stood for Low Level Virtual Machine, though the project has expanded and the name is no longer officially an initialism.
In computer programming, an inline assembler is a feature of some compilers that allows low-level code written in assembly language to be embedded within a program, among code that otherwise has been compiled from a higher-level language such as C or Ada.
An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation. A "good" IR must be accurate – capable of representing the source code without loss of information – and independent of any particular source or target language. An IR may take one of several forms: an in-memory data structure, or a special tuple- or stack-based code readable by the program. In the latter case it is also called an intermediate language.
In software engineering, retargeting is an attribute of software development tools that have been specifically designed to generate code for more than one computing platform.
QEMU is a free and open-source emulator. It emulates a computer's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with Kernel-based Virtual Machine (KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one processor architecture to run on another.
A source-to-source translator, source-to-source compiler, transcompiler, or transpiler is a type of translator that takes the source code of a program written in a programming language as its input and produces an equivalent source code in the same or a different programming language. A source-to-source translator converts between programming languages that operate at approximately the same level of abstraction, while a traditional compiler translates from a higher level programming language to a lower level programming language. For example, a source-to-source translator may perform a translation of a program from Python to JavaScript, while a traditional compiler translates from a language like C to assembly or Java to bytecode. An automatic parallelizing compiler will frequently take in a high level language program as an input and then transform the code and annotate it with parallel code annotations or language constructs.
The Small Device C Compiler (SDCC) is a free-software, partially retargetable C compiler for 8-bit microcontrollers. It is distributed under the GNU General Public License. The package also contains an assembler, linker, simulator and debugger. As of March 2007, SDCC is the only open-source C compiler for Intel 8051-compatible microcontrollers. In 2011 the compiler was downloaded on average more than 200 times per day.