# assembler

> program that turns assembly language into machine code

**Wikidata**: [Q6470767](https://www.wikidata.org/wiki/Q6470767)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Assembler_(computing))  
**Source**: https://4ort.xyz/entity/assembler

## Summary
An assembler is a program that translates assembly language into machine code. It serves as a translator between human-readable assembly instructions and the binary instructions a computer's processor can execute directly. Assemblers are fundamental tools in low-level programming and system development.

## Key Facts
- An assembler converts assembly language source code into machine code (object code)
- It is classified as a programming tool, translator, and implementation of a programming language
- The assembler is the opposite of a disassembler, which performs the reverse operation
- It is used by assembly language programmers to create executable programs
- Assemblers are followed in the development chain by kernels in operating system construction
- The term has aliases in multiple languages including "assembleur" (French) and "アセンブラー" (Japanese)
- It has a GND ID of 4003255-3 and is documented in Wikidata with sitelink count of 31

## FAQs
### Q: What is the difference between an assembler and a compiler?
A: An assembler translates assembly language (low-level, human-readable code with one-to-one correspondence to machine instructions) into machine code, while a compiler translates high-level programming languages into machine code or intermediate code. Assemblers work with assembly language specifically, whereas compilers handle languages like C, Java, or Python.

### Q: What is the relationship between assembly language and machine code?
A: Assembly language is a human-readable representation of machine code instructions. Each assembly instruction corresponds directly to a specific machine code instruction. The assembler performs the translation between these two forms, converting symbolic assembly instructions into the binary patterns that processors execute.

### Q: What comes after assembly language in the software development process?
A: After assembly language is translated by an assembler into machine code, the resulting object code typically undergoes linking to create an executable program. In operating system development, the machine code produced by assemblers often serves as input for kernel development, which manages system resources and hardware abstraction.

## Why It Matters
Assemblers are crucial tools in computing because they provide the bridge between human-readable low-level programming and the binary instructions that computers execute. Without assemblers, programmers would need to write programs directly in binary machine code, which is extremely difficult and error-prone. Assemblers enable developers to write efficient, hardware-specific code while maintaining readability and manageability. They are particularly important in embedded systems, device drivers, operating system kernels, and performance-critical applications where direct hardware control and optimization are essential. The assembler's role in translating assembly language makes it possible to leverage the full power of a processor's instruction set while working at a level closer to the hardware than high-level languages allow. This capability is fundamental to system programming, reverse engineering, and understanding how computers actually execute instructions at the lowest level.

## Notable For
- Direct translation of assembly language to machine code with one-to-one instruction mapping
- Essential role in low-level system programming and operating system development
- Ability to produce highly optimized code by leveraging specific processor instructions
- Historical significance as one of the earliest programming tools alongside compilers
- Critical function in embedded systems and hardware interface programming

## Body
### Technical Function
An assembler performs the specific task of translating assembly language source code into machine code that can be directly executed by a computer's processor. This translation process involves converting mnemonic operation codes and symbolic addresses into their binary equivalents. The assembler reads assembly language instructions line by line, performs the necessary translations, and outputs object code files containing the machine code representation.

### Classification and Relationships
The assembler is classified as a programming tool, specifically a translator and an implementation of a programming language. It follows firmware in the software development hierarchy and is used by assembly language programmers. The assembler is the opposite of a disassembler, which performs the reverse operation of converting machine code back into assembly language. In the development chain, assemblers are typically followed by kernels in operating system construction.

### Language Support and Aliases
The assembler concept exists across multiple languages with various aliases: "assembly program" in English, "assembleur" in French, "Assemblierer" in German, and "アセンブラー" in Japanese. This multilingual presence reflects the universal need for this type of translation tool in computing across different cultures and regions.

### Output and Applications
The primary product or material produced by an assembler is machine code - the binary instructions that processors execute directly. Assemblers are particularly important in scenarios requiring direct hardware control, such as embedded systems programming, device driver development, operating system kernels, and performance-critical applications where every CPU cycle matters. They enable programmers to write code that is both efficient and maintainable, striking a balance between low-level control and human readability.

## References

1. [Source](https://lingualibre.fr/wiki/Q201044)