List of assembly software and tools

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

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

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

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

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

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

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:

See also

References

  1. ↑ "Using as". sourceware.org. GNU Project. Retrieved May 10, 2026.
  2. ↑ "Documentation". NASM. Retrieved May 10, 2026.
  3. ↑ "Microsoft Macro Assembler reference". Microsoft Learn. October 15, 2024. Retrieved May 10, 2026.
  4. ↑ "flat assembler 1.73 Programmer's Manual". flatassembler.net. Retrieved May 10, 2026.
  5. ↑ "Yasm User Manual". tortall.net. Retrieved May 10, 2026.
  6. ↑ "High Level Assembler Toolkit". IBM Documentation. IBM. Retrieved May 10, 2026.
  7. ↑ "llvm-mc - LLVM Machine Code Playground". LLVM Documentation. Retrieved May 10, 2026.
  8. ↑ "Keystone Engine". GitHub. Retrieved May 10, 2026.
  9. ↑ "objdump". GNU Binary Utilities. GNU Project. Retrieved May 10, 2026.
  10. ↑ "llvm-objdump - LLVM's object file dumper". LLVM Documentation. Retrieved May 10, 2026.
  11. ↑ "/DISASM". Microsoft Learn. August 3, 2021. Retrieved May 10, 2026.
  12. ↑ "The Ultimate Disassembly Framework". Capstone. Retrieved May 10, 2026.
  13. ↑ "Ghidra is a software reverse engineering framework". GitHub. National Security Agency. Retrieved May 10, 2026.
  14. ↑ "The IDA Pro Book, 2nd Edition". No Starch Press. Retrieved May 12, 2026.
  15. ↑ "Toolchain". The Official Radare2 Book. Retrieved May 10, 2026.
  16. ↑ 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.
  17. ↑ "Source and Machine Code". Debugging with GDB. GNU Project. Retrieved May 10, 2026.
  18. ↑ "The LLDB Debugger". LLDB Documentation. Retrieved May 10, 2026.
  19. ↑ "OllyDbg v1.10". OllyDbg. Retrieved May 10, 2026.
  20. ↑ "edb-debugger". GitHub. Retrieved May 10, 2026.
  21. ↑ "SPIM MIPS Simulator". SourceForge. Retrieved May 10, 2026.
  22. ↑ "MARS MIPS Assembler and Runtime Simulator". Missouri State University. November 12, 2025. Retrieved May 10, 2026.
  23. ↑ "RARS -- RISC-V Assembler and Runtime Simulator". GitHub. Retrieved May 10, 2026.
  24. ↑ "Microprocessor Emulator". Internet Archive. November 8, 2004. Retrieved May 10, 2026.
  25. ↑ "WebAssembly". WebAssembly. Retrieved May 11, 2026.
  26. ↑ Chisnall, David (June 12, 2017). Modern Intermediate Representations (IR) (PDF). LLVM Summer School. Paris: LLVM. Retrieved May 12, 2026.
  27. ↑ "Multi-Level Intermediate Representation Overview". MLIR. Retrieved May 11, 2026.
  28. ↑ "SPIR-V Specification". Khronos Group. Retrieved May 11, 2026.