This is a list of assembly software and tools, including software used for assembly language programming, machine code generation, disassembly, debugging, binary analysis, reverse engineering, and instruction-set simulation.
| Name | Type | Main scope | Notes |
|---|---|---|---|
| GNU Assembler | Assembler | Multiple architectures | The GNU assembler, commonly invoked as as, is part of GNU Binutils and is used with GNU toolchains. |
| NASM | Assembler and disassembler | x86 and x86-64 | NASM is an assembler for the Intel x86 architecture and supports multiple object-file formats. |
| MASM | Macro assembler | x86 and x64 | Microsoft's Macro Assembler includes a macro language and is documented as part of Microsoft's C++ build tools. |
| FASM | Assembler | x86 and x86-64 | Flat assembler is a multi-pass assembler for x86-family processors. |
| Yasm | Assembler | x86 and AMD64 | Yasm is a modular assembler that supports NASM and GAS syntax. |
| High Level Assembler | Mainframe assembler | IBM z/OS, z/VM and z/VSE | IBM High Level Assembler is used for assembler-language development on IBM mainframe operating systems. |
| LLVM-MC | Machine-code tool | Multiple architectures supported by LLVM | llvm-mc takes assembly code for a specified architecture as input and can generate object files or executables, encode instructions, and disassemble byte strings. |
| Keystone Engine | Assembler framework | Multiple architectures | Keystone is a lightweight multi-platform assembler framework with bindings for several programming languages. |
| Name | Type | Main scope | Notes |
|---|---|---|---|
| GNU objdump | Object-file utility and disassembler | Multiple object formats and architectures | objdump can display information from object files and can be used for disassembly. |
| LLVM-objdump | Object-file utility and disassembler | Multiple object formats and architectures | llvm-objdump prints the contents of object files and linked images and includes disassembly options. |
| DUMPBIN | Object-file utility and disassembler | COFF, PE and related Microsoft binary formats | The Microsoft DUMPBIN /DISASM option displays disassembly of code sections in native files. |
| Capstone | Disassembly framework | Multiple architectures | Capstone is a lightweight multi-platform, multi-architecture disassembly framework used in binary analysis and reverse engineering. |
| Ghidra | Reverse-engineering suite | Multiple architectures and executable formats | Ghidra is a software reverse-engineering framework created and maintained by the National Security Agency Research Directorate. |
| IDA Pro | Disassembler, decompiler and debugger | Multiple processor families | IDA Pro is a commercial, multi-platform and multi-processor disassembler used for debugging and reverse engineering compiled programs. |
| radare2 | Reverse-engineering framework | Multiple architectures and binary formats | radare2 is a command-line reverse-engineering toolkit with libraries, tools and scripting interfaces. |
| Binary Ninja | Disassembler and binary-analysis tool | Multiple architectures and binary formats | Binary Ninja is a disassembler used for reverse-engineering tasks and binary analysis. |
| Name | Type | Main scope | Notes |
|---|---|---|---|
| GDB | Debugger | Multiple architectures | GDB can display machine instructions with its disassemble command and can map source lines to program addresses. |
| LLDB | Debugger | Multiple architectures | LLDB is a debugger in the LLVM project and uses LLVM components including the LLVM disassembler. |
| OllyDbg | Assembly-level debugger | 32-bit Windows x86 programs | OllyDbg is an assembler-level analyzing debugger for Microsoft Windows, with emphasis on binary code analysis. |
| edb | Graphical debugger | AArch32, x86 and x86-64 | edb is a cross-platform debugger inspired by OllyDbg. |
| Name | Type | Main scope | Notes |
|---|---|---|---|
| SPIM | Simulator and debugger | MIPS32 | SPIM is a self-contained simulator that reads and executes MIPS32 assembly language programs. |
| MARS | Educational IDE and simulator | MIPS | MARS is a lightweight interactive development environment for programming in MIPS assembly language. |
| RARS | Assembler and runtime simulator | RISC-V | RARS assembles and simulates RISC-V assembly language programs and is intended for people getting started with RISC-V. |
| emu8086 | Emulator and assembler | Intel 8086 | emu8086 is an 8086 microprocessor emulator with an integrated assembler, often used for educational assembly-language programming. |
| Name | Type | Main use | Notes |
|---|---|---|---|
| WebAssembly | Portable bytecode and text format | Web and server-side applications | A low-level, assembly-like compilation target designed for portable execution. |
| LLVM IR | Intermediate representation | Compiler optimization and code generation | The LLVM language reference describes LLVM IR as an SSA-based assembly language used throughout the LLVM compilation strategy. |
| MLIR | Multi-level intermediate representation | Compiler infrastructure for heterogeneous hardware and domain-specific compilers | An LLVM subproject for building reusable and extensible compiler infrastructure across multiple levels of abstraction. |
| SPIR-V | Binary intermediate language | Graphics shaders and compute kernels | A standardized intermediate form used by APIs such as Vulkan, OpenGL, and OpenCL. |
Assembly language is not a single programming language, but a family of low-level languages associated with particular instruction set architectures and processor families.
Examples include: