AssemblerAssembler (disambiguation) for other meanings.
An assembler is a computer program for translating assembly language — essentially, a mnemonic representation of machine language — into object code. A cross assembler (see cross compiler) produces code for one processor, but runs on another.
As well as translating assembly instruction mnemonics into opcodes, assemblers provide the ability to use symbolic names for memory locations (saving tedious calculations and manually updating addresses when a program is slightly modified), and macro facilities for performing textual substitution — typically used to encode common short sequences of instructions to run inline instead of in a subroutine.
Assemblers are far simpler to write than compilers for high-level languages, and have been available since the 1950s. Modern assemblers, especially for RISC based architectures, such as MIPS, Sun SPARC and HP PA-RISC, optimize instruction scheduling to exploit the CPU pipeline efficiently. Most assemblers are 'macro assemblers', which allow complex macro constructs.
High-level assemblers provide high-level-language abstractions such as advanced control structures, high-level procedure/function declarations and invocations, and high-level abstract data types including structures/records, unions, classes, and sets.
Hundreds of assemblers have been written; some notable examples include:
- ASEM-51 for the Intel MCS-51 family of microcontrollers
- A56 - for Motorola DSP56000 DSPss (DSP56k series)
- FAP - for IBM 700/7000 series mainframes
- FASM - open source IA-32 assembler
- GAS (GNU Assembler) - open source, available for many architectures
- HLASM (High Level Assembler) - for mainframes
- MACRO-11 - for DEC PDP-11
- MACRO-32 - for DEC VAX-11
- MASM (Macro/MS Assembler) - x86 assembler from Microsoft
- NASM (Netwide Assembler) - open source x86 assembler
- PAL-III - for DEC PDP-8
- TASM (Turbo Assembler) - x86 assembler from Borland