Software:List of assembly software and tools
From HandWiki
Short description: Assembly-language programming and binary-analysis 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:
- 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
| Wikibooks has a book on the topic of: Subject:Assembly languages |
- Assembler (computing)
- Comparison of assemblers
- Executable and Linkable Format
- Instruction set architecture
- Lists of programming software development tools
- Mach-O
- Object file
- Opcode
- Portable Executable
References
- ↑ "Using as". GNU Project. https://sourceware.org/binutils/docs/as/.
- ↑ "Documentation". https://www.nasm.us/docs.html.
- ↑ "Microsoft Macro Assembler reference". October 15, 2024. https://learn.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference.
- ↑ "flat assembler 1.73 Programmer's Manual". https://flatassembler.net/docs.php?article=manual.
- ↑ "Yasm User Manual". https://www.tortall.net/projects/yasm/manual/html/manual.html.
- ↑ "High Level Assembler Toolkit". IBM. https://www.ibm.com/docs/en/zos/2.5.0?topic=descriptions-high-level-assembler-toolkit.
- ↑ "llvm-mc - LLVM Machine Code Playground". https://llvm.org/docs/CommandGuide/llvm-mc.html.
- ↑ "Keystone Engine". https://github.com/keystone-engine/keystone.
- ↑ "objdump". GNU Project. https://sourceware.org/binutils/docs/binutils/objdump.html.
- ↑ "llvm-objdump - LLVM's object file dumper". https://llvm.org/docs/CommandGuide/llvm-objdump.html.
- ↑ "/DISASM". August 3, 2021. https://learn.microsoft.com/en-us/cpp/build/reference/disasm.
- ↑ "The Ultimate Disassembly Framework". https://www.capstone-engine.org/.
- ↑ "Ghidra is a software reverse engineering framework". National Security Agency. https://github.com/NationalSecurityAgency/ghidra.
- ↑ "The IDA Pro Book, 2nd Edition". https://nostarch.com/idapro2.htm.
- ↑ "Toolchain". https://book.rada.re/intro/overview.html.
- ↑ Borzacchiello, Luca; Coppa, Emilio; Demetrescu, Camil (2022). "SENinja: A symbolic execution plugin for Binary Ninja". SoftwareX 20. doi:10.1016/j.softx.2022.101219.
- ↑ "Source and Machine Code". GNU Project. https://sourceware.org/gdb/current/onlinedocs/gdb.html/Machine-Code.html.
- ↑ "The LLDB Debugger". https://lldb.llvm.org/.
- ↑ "OllyDbg v1.10". https://www.ollydbg.de/.
- ↑ "edb-debugger". https://github.com/eteran/edb-debugger.
- ↑ "SPIM MIPS Simulator". https://spimsimulator.sourceforge.net/.
- ↑ "MARS MIPS Assembler and Runtime Simulator". November 12, 2025. https://computerscience.missouristate.edu/mars-mips-simulator.htm.
- ↑ "RARS -- RISC-V Assembler and Runtime Simulator". https://github.com/TheThirdOne/rars.
- ↑ "Microprocessor Emulator". November 8, 2004. https://archive.org/details/tucows_325007_Emu8086_-_Microprocessor_Emulator.
- ↑ "WebAssembly". https://webassembly.org/.
- ↑ Chisnall, David (June 12, 2017). "Modern Intermediate Representations (IR)" (PDF). LLVM Summer School. Paris: LLVM. https://llvm.org/devmtg/2017-06/1-Davis-Chisnall-LLVM-2017.pdf. Retrieved May 12, 2026.
- ↑ "Multi-Level Intermediate Representation Overview". https://mlir.llvm.org/.
- ↑ "SPIR-V Specification". https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html.
External links
