More meanings of this word and English-Russian, Russian-English translations for the word «DISASSEMBLER» in dictionaries. Note: Immediate operand could be made smaller by sign extensionĭoesn't have anything in the source to make sure it assembles to the longer encoding that leaves room for relocations to rewrite it with a 32bit offset. plt align=16 execute section number 11, code It might not be, though, since disassembly of stuff like (from /lib/x86_64-linux-gnu/libc.so.6) (So you aren't limited to keeping things the same size.) With no changes, the result should be near-identical. Note that this output is ready to be assembled back into an object file, so you can tweak the code at the asm source level, rather than with a hex-editor on the machine code. It can disassemble into NASM, YASM, MASM, or GNU (AT&T) syntax. It's open source, and easy to compile for Linux. It also indicates NOPs more clearly than other disassemblers (making it clear when there's padding, rather than disassembling it as just another instruction.) Other disassemblers usually disassemble jump instructions with just a numeric destination, and don't put any marker at a branch target to help you find the top of loops and so on. (It doesn't recognize - as shorthand for stdout, and defaults to outputting to a file of similar name to the input file, with. It will add comments to the disassembly output for performance problems (like the dreaded LCP stall from instructions with 16bit immediate constants, for example). Portable tools that can disassemble AArch64, MIPS, or whatever machine code include objdump and llvm-objdump.Īgner Fog's disassembler, objconv, is quite nice. With full debugging info it's even better. a.out.(no debugging symbols found).done.ĭump of assembler code for function main:
You don't have to run the binary or have debuginfo.
An interesting alternative to objdump is gdb.