Updated in 2025-05.
This article provides a description of popular assemblers and their
architecture-specific differences.
Assemblers
GCC generates assembly code and invokes GNU Assembler (also known as
"gas"), which is part of GNU Binutils, to convert the assembly code into
machine code. The GCC driver is also capable of accepting assembly input
files. Due to GCC's widespread use, GNU Assembler is arguably the most
popular assembler.
Within the LLVM project, the LLVM integrated assembler is a library
that is linked by Clang, llvm-mc, and lld (for LTO purposes) to generate
machine code. It supports a wide range of GNU Assembler syntax and can
be used as a drop-in replacement for GNU Assembler.
On the Windows platform, the Microsoft Macro Assembler (MASM) is
widely used.
On the IBM AIX platform, the AIX assembler is used. In 2019, IBM
developers started to modify LLVM integrated assembler to support the
AIX syntax.
On the IBM z/OS platform, the IBM High Level Assembler (HLASM) is
used. In 2021, IBM developers started to modify LLVM integrated
assembler to support the HLASM syntax.
Concepts
Sections are named, contiguous blocks of code or data within an
object file. They allow you to logically group related parts of your
program. The assembler places code and data into these sections as it
processes the source file.
Symbols are names that represent memory addresses or values.
Read More