List of assembly software and tools
Appearance
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.
Assemblers and machine-code generators
[edit]| 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.[1] |
| NASM | Assembler and disassembler | x86 and x86-64 | NASM is an assembler for the Intel x86 architecture and supports multiple object-file formats.[2] |
| 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.[3] |
| FASM | Assembler | x86 and x86-64 | Flat assembler is a multi-pass assembler for x86-family processors.[4] |
| Yasm | Assembler | x86 and AMD64 | Yasm is a modular assembler that supports NASM and GAS syntax.[5] |
| 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.[6] |
| 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.[7] |
| Keystone Engine | Assembler framework | Multiple architectures | Keystone is a lightweight multi-platform assembler framework with bindings for several programming languages.[8] |
Disassemblers and binary-analysis tools
[edit]| 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.[9] |
| 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.[10] |
| 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.[11] |
| Capstone | Disassembly framework | Multiple architectures | Capstone is a lightweight multi-platform, multi-architecture disassembly framework used in binary analysis and reverse engineering.[12] |
| 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.[13] |
| 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.[14] |
| radare2 | Reverse-engineering framework | Multiple architectures and binary formats | radare2 is a command-line reverse-engineering toolkit with libraries, tools and scripting interfaces.[15] |
| 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.[16] |
Debuggers with assembly-level features
[edit]| 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.[17] |
| LLDB | Debugger | Multiple architectures | LLDB is a debugger in the LLVM project and uses LLVM components including the LLVM disassembler.[18] |
| 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.[19] |
| edb | Graphical debugger | AArch32, x86 and x86-64 | edb is a cross-platform debugger inspired by OllyDbg.[20] |
Educational IDEs, simulators and emulators
[edit]| Name | Type | Main scope | Notes |
|---|---|---|---|
| SPIM | Simulator and debugger | MIPS32 | SPIM is a self-contained simulator that reads and executes MIPS32 assembly language programs.[21] |
| MARS | Educational IDE and simulator | MIPS | MARS is a lightweight interactive development environment for programming in MIPS assembly language.[22] |
| 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.[23] |
| emu8086 | Emulator and assembler | Intel 8086 | emu8086 is an 8086 microprocessor emulator with an integrated assembler, often used for educational assembly-language programming.[24] |
Portable and intermediate assembly-like languages
[edit]| 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.[25] |
| 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.[26] |
| 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.[27] |
| SPIR-V | Binary intermediate language | Graphics shaders and compute kernels | A standardized intermediate form used by APIs such as Vulkan, OpenGL, and OpenCL.[28] |
Assembly language families
[edit]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:
- AArch64 assembly
- ARB assembly language
- ARM assembly
- AVR assembly
- Autocoder
- COMPASS
- High Level Assembly
- Honeywell ARGUS
- IBM 1401 Symbolic Programming System
- IBM Basic assembly language and successors
- System/360 assembly
- IBM Z assembly
- 8051 assembly
- MACRO-10
- MACRO-11
- MIPS assembly
- 6800 assembly
- 68HC08 assembly
- 68HC11 assembly
- 68000 assembly
- 6502 assembly
- MSP430 assembly
- Parrot assembly language
- PIC assembly
- PowerPC assembly
- RISC-V assembly
- SPARC assembly
- Typed assembly language
- VAX MACRO
- 65C02 assembly
- 65C816 assembly
- x86 assembly
- x86-64 assembly
- Z80 assembly
- Z8000 assembly
See also
[edit]Wikibooks has a book on the topic of: Subject:Assembly languages
References
[edit]- ↑ "Using as". sourceware.org. GNU Project. Retrieved May 10, 2026.
- ↑ "Documentation". NASM. Retrieved May 10, 2026.
- ↑ "Microsoft Macro Assembler reference". Microsoft Learn. October 15, 2024. Retrieved May 10, 2026.
- ↑ "flat assembler 1.73 Programmer's Manual". flatassembler.net. Retrieved May 10, 2026.
- ↑ "Yasm User Manual". tortall.net. Retrieved May 10, 2026.
- ↑ "High Level Assembler Toolkit". IBM Documentation. IBM. Retrieved May 10, 2026.
- ↑ "llvm-mc - LLVM Machine Code Playground". LLVM Documentation. Retrieved May 10, 2026.
- ↑ "Keystone Engine". GitHub. Retrieved May 10, 2026.
- ↑ "objdump". GNU Binary Utilities. GNU Project. Retrieved May 10, 2026.
- ↑ "llvm-objdump - LLVM's object file dumper". LLVM Documentation. Retrieved May 10, 2026.
- ↑ "/DISASM". Microsoft Learn. August 3, 2021. Retrieved May 10, 2026.
- ↑ "The Ultimate Disassembly Framework". Capstone. Retrieved May 10, 2026.
- ↑ "Ghidra is a software reverse engineering framework". GitHub. National Security Agency. Retrieved May 10, 2026.
- ↑ "The IDA Pro Book, 2nd Edition". No Starch Press. Retrieved May 12, 2026.
- ↑ "Toolchain". The Official Radare2 Book. Retrieved May 10, 2026.
- ↑ Borzacchiello, Luca; Coppa, Emilio; Demetrescu, Camil (2022). "SENinja: A symbolic execution plugin for Binary Ninja". SoftwareX. 20 101219. doi:10.1016/j.softx.2022.101219. hdl:11385/236289.
- ↑ "Source and Machine Code". Debugging with GDB. GNU Project. Retrieved May 10, 2026.
- ↑ "The LLDB Debugger". LLDB Documentation. Retrieved May 10, 2026.
- ↑ "OllyDbg v1.10". OllyDbg. Retrieved May 10, 2026.
- ↑ "edb-debugger". GitHub. Retrieved May 10, 2026.
- ↑ "SPIM MIPS Simulator". SourceForge. Retrieved May 10, 2026.
- ↑ "MARS MIPS Assembler and Runtime Simulator". Missouri State University. November 12, 2025. Retrieved May 10, 2026.
- ↑ "RARS -- RISC-V Assembler and Runtime Simulator". GitHub. Retrieved May 10, 2026.
- ↑ "Microprocessor Emulator". Internet Archive. November 8, 2004. Retrieved May 10, 2026.
- ↑ "WebAssembly". WebAssembly. Retrieved May 11, 2026.
- ↑ Chisnall, David (June 12, 2017). Modern Intermediate Representations (IR) (PDF). LLVM Summer School. Paris: LLVM. Retrieved May 12, 2026.
- ↑ "Multi-Level Intermediate Representation Overview". MLIR. Retrieved May 11, 2026.
- ↑ "SPIR-V Specification". Khronos Group. Retrieved May 11, 2026.