The inline assembler/disassembler. Initially 'rasm' was designed to be used for binary patching, just to get the bytes of a certain opcode. Here's the help
$ rasm -h
Usage: rasm [-elvV] [-f file] [-s offset] [-a arch] [-d bytes] "opcode"|-
if 'opcode' is '-' reads from stdin
-v enables debug
-d [bytes] disassemble from hexpair bytes
-f [file] compiles assembly file to 'file'.o
-s [offset] offset where this opcode is suposed to be
-a [arch] selected architecture (x86, olly, ppc, arm, java, rsc)
-e use big endian
-l list all supported opcodes and architectures
-V show version information
The basic 'portable' assembler instructions can be listed with 'rasm -l':
$ rasm -l
Usage: rasm [-elvV] [-f file] [-s offset] [-a arch] [-d bytes] "opcode"|-
Architectures:
olly, x86, ppc, arm, java
Opcodes:
call [addr] - call to address
jmp [addr] - jump to relative address
jz [addr] - jump if equal
jnz - jump if not equal
trap - trap into the debugger
nop - no operation
push 33 - push a value or reg in stack
pop eax - pop into a register
int 0x80 - system call interrupt
ret - return from subroutine
ret0 - return 0 from subroutine
hang - hang (infinite loop
mov eax, 33 - asign a value to a register
Directives:
.zero 23 - fill 23 zeroes
.org 0x8000 - offset