91  Rz-asm

rz-asm is an inline assembler/disassembler. Its main function is to get bytes corresponding to given machine instruction opcode.

$ rz-asm -h
Usage: rz-asm [-ACdDehLBvw] [-a arch] [-b bits] [-m plugin] [-o addr] [-s syntax]
             [-f file] [-F fil:ter] [-i skip] [-l len] 'code'|hex|-
 -a arch     Set architecture to assemble/disassemble (see -L)
 -A          Show Analysis information from given hexpairs
 -b bits     Set cpu register size (8, 16, 32, 64) (RZ_ASM_BITS)
 -B          Binary input/output (-l is mandatory for binary input)
 -c cpu      Select specific CPU (depends on arch)
 -C          Output in C format
 -d, -D      Disassemble from hexpair bytes (-D show hexpairs)
 -e          Use big endian instead of little endian
 -I          Display lifted RzIL code (same input as in -d, IL is also validated)
 -E          Display ESIL expression (same input as in -d)
 -f file     Read data from file
 -F in:out   Specify input and/or output filters (att2intel, x86.pseudo, ...)
 -h, -hh     Show this help, -hh for long
 -i len      Ignore N bytes of the input buffer
 -j          Output in JSON format
 -k kernel   Select operating system (linux, windows, darwin, ..)
 -l len      Input/Output length
 -L          List Asm plugins: (a=asm, d=disasm, A=analyze, e=ESIL, I=RzIL)
 -m plugin   List supported CPUs for the chosen plugin
 -o, -@ addr Set start address for code (default 0)
 -O file     Output file name (rz-asm -Bf a.asm -O a)
 -p          Run SPP over input for assembly
 -q          Quiet mode
 -r          Output in rizin commands
 -s syntax   Select syntax (intel, att)
 -v          Show version information
 -x          Use hex dwords instead of hex pairs when assembling.
 -w          Describe opcode
 If '-l' value is greater than output length, output is padded with nops
 If the last argument is '-' reads from stdin
Environment:
 RZ_ARCH      e asm.arch # architecture to assemble/disassemble (same as rz-asm -a)
 RZ_ASM_ARCH             # architecture to assemble/disassemble (same as rz-asm -a)
 RZ_ASM_BITS             # cpu register size (8, 16, 32, 64) (same as rz-asm -b)
 RZ_BITS      e asm.bits # cpu register size (8, 16, 32, 64) (same as rz-asm -b)
 RZ_DEBUG                # if defined, show error messages and crash signal
 RZ_NOPLUGINS            # do not load shared plugins (speedup loading)

Plugins for supported target architectures can be listed with the -L option. Knowing a plugin name, you can use it by specifying its name to the -a option

$ rz-asm -L
_dAeI 8 16       6502        LGPL3   6502/NES/C64/Tamagotchi/T-1000 CPU
adAeI 8          8051        PD      Intel 8051 disassembler
_dA__ 64         alpha       LGPL3   DEC Alpha Capstone-based disassembler
_dA__ 32         amd29k      LGPL3   AMD 29k RISC disassembler (by deroad)
_dA__ 16 32      arc         GPL3    Argonaut RISC Core
adAeI 16 32 64   arm         BSD     ARM Capstone-based disassembler
a____ 16 32 64   arm.as      LGPL3   as ARM Assembler (use RZ_ARM32_AS and RZ_ARM64_AS environment) (by pancake)
adAeI 8 16       avr         LGPL3   Atmel AVR disassembler
adA_I 16 32 64   bf          LGPL3   Brainfuck (by pancake, nibble) v4.0.0
_dA__ 32         chip8       LGPL3   Chip8 disassembler
_dA__ 16 32 64   cil         LGPL3   .NET CIL/MSIL (Common Intermediate Language) bytecode disassembler
_dA__ 16         cr16        LGPL3   CompactRISC CR16 disassembler
_dA__ 32         cris        GPL3    Axis Communications 32-bit embedded processor disassembler (by pancake)
adA__ 32 64      dalvik      LGPL3   Dalvik (Android VM) bytecode disassembler
ad___ 16         dcpu16      PD      Mojang′s DCPU-16 disassembler
_dA__ 32 64      ebc         LGPL3   EFI bytecode disassembler (by Fedor Sakharov)
adAeI 16         gb          LGPL3   GameBoy(TM) (z80-like) (by condret)
_dAe_ 8 16 32 64 ghidra      LGPL3   SLEIGH Disassembler from Ghidra (by FXTi)
_dAeI 16         h8300       LGPL3   Hitachi/Renesas H8/300 disassembly plugin
_dA_I 32         hexagon     LGPL3   Qualcomm Hexagon (QDSP6) V6 (by Rot127)
_d___ 32         hppa        GPL3    HP PA-RISC
_dA__ 4          i4004       LGPL3   Intel 4004 disassembler
_dA__ 8          i8080       BSD     Intel 8080 disassembler
adA__ 32         java        LGPL-3  Java bytecode disassembler (by deroad)
_d___ 32         lanai       GPL3    Google LANAI disassembler
_d___ 8          lh5801      LGPL3   SHARP LH5801 disassembler
_d___ 32         lm32        BSD     Lattice Micro 32 ISA disassembler (by Felix Held)
_dA__ 32 64      loongarch   LGPL3   Loongson LoongArch disassembler
adA__ 8          luac        LGPL3   Lua bytecode (LUAC) disassembler
_dA__ 8 32       m680x       BSD     Motorola 680X Capstone-based disassembler
_dA__ 32         m68k        BSD     Motorola 68K Capstone-based disassembler
_dA__ 32         malbolge    LGPL3   Malbolge Ternary VM bytecode disassembler (by condret)
_dA__ 32         mcore       LGPL3   Motorola MCORE disassembler
_d___ 16         mcs96       LGPL3   Intel MCS-96 disassembler (by condret)
adAeI 16 32 64   mips        BSD     MIPS Capstone-based disassembler
_dA_I 16         msp430      LGPL3   Texas Instruments MSP430 disassembler
adA__ 16 32 64   null        MIT     NULL (empty) disassembler (by pancake) v1.0.0
_dA__ 32         or1k        LGPL3   OpenRISC 1000 disassembler
_dAeI 16 32      pic         LGPL3   Microchip PIC disassembler
_dAeI 32 64      ppc         BSD     PowerPC Capstone-based disassembler (by pancake)
a____ 32 64      ppc.as      LGPL3   as PPC Assembler (use RZ_PPC_AS environment) (by eagleoflqj)
_dA__ 32         propeller   LGPL3   Parallax Propeller disassembler
_dA__ 8 16       pyc         LGPL3   Python bytecode (PYC) disassembler
_dAe_ 32 64      riscv       GPL3    RISC-V disassembler
_dA__ 32 64      riscv.cs    BSD     RISC-V Capstone-based disassembler
adA__ 32         rl78        LGPL3   Renesas RL78 disassembler (by Bastian Engel)
_dA__ 32         rsp         LGPL3   Nintendo N64 Reality Signal Processor disassembler
_dA__ 32         rx          LGPL3   Renesas RX Family disassembler (by Heersin)
adAeI 32         sh          LGPL3   Hitachi/Renesas SuperH-4 disassembler (by DMaroo)
_dA__ 8 16       snes        LGPL3   SuperNES CPU disassembler
_dA_I 32 64      sparc       BSD     Sun SPARC Capstone-based disassembler
_dA__ 16         spc700      LGPL3   Sony SPC700 (Nintendo SuperNES sound-chip) disassembler
_dA__ 32 64      sysz        BSD     IBM SystemZ (S/390) Capstone-based disassembler
_dA__ 32         tms320      LGPL3   Texas Instruments TMS320 DSP family (c54x,c55x,c55x+,c64x) disassembler
_dA_I 32         tricore     BSD     Siemens TriCore Capstone-based disassembler (by billow)
_dAeI 32         v810        LGPL3   NEC V810 disassembler (by pancake)
_dAeI 32         v850        LGPL3   NEC/Renesas V850 disassembler
_dA__ 8 32       vax         GPL3    DEC VAX disassembler
adA__ 32         wasm        MIT     WebAssembly disassembler (by cgvwzq) v0.1.0
_dAeI 16 32 64   x86         MIT     X86/X86_64 Zydis-based disassembler
a____ 16 32 64   x86.as      LGPL3   Intel X86 GNU Assembler (Use RZ_X86_AS env)
a____ 16 32 64   x86.nasm    LGPL3   X86 nasm assembler
a____ 16 32 64   x86.nz      LGPL3   x86 handmade assembler
_dA__ 16         xap         PD      Cambridge Consultants XAP4 RISC (CSR) disassembler
_dA__ 32         xcore       BSD     XCore Capstone-based disassembler (by pancake)
_dAeI 32         xtensa      LGPL3   Tensilica Xtensa Capstone-based disassembler (by billow)
adA__ 8          z80         GPL3    Zilog Z80 disassembler (by condret)

Note that “ad” in the first column means both assembler and disassembler are offered by a corresponding plugin. “d” indicates disassembler, ”a” means only assembler is available.