starblue ve hlovdal hem kanonik cevap parçaları var. Ham i8086 kodunu parçalara ayırmak istiyorsanız, AT&T sözdizimini değil, genellikle Intel sözdizimini istersiniz, bu nedenle şunu kullanın:
objdump -D -Mintel,i8086 -b binary -m i386 mbr.bin
objdump -D -Mintel,i386 -b binary -m i386 foo.bin # for 32-bit code
objdump -D -Mintel,x86-64 -b binary -m i386 foo.bin # for 64-bit code
Kodunuz ELF (veya a.out (veya (E) COFF)) ise, kısa biçimi kullanabilirsiniz:
objdump -D -Mintel,i8086 a.out # disassembles the entire file
objdump -d -Mintel,i8086 a.out # disassembles only code sections
32 bit veya 64 bit kod için ,8086; ELF başlığı bu bilgiyi zaten içeriyor.
ndisasm, jameslin'in önerdiği gibi , iyi bir seçimdir, ancak objdumpgenellikle işletim sistemi ile birlikte gelir ve GNU binutils (GCC tarafından desteklenenlerin üst kümesi) tarafından desteklenen tüm mimarilerle başa çıkabilir ve çıktısı genellikle asGNU'ya (ndisasm'ın nasmelbette beslenecek ).
Peter Cordes “ Agner Fog'un objconv'si çok güzel. Dal hedeflerine etiketler koyar ve kodun ne yaptığını anlamayı çok daha kolay hale getirir. NASM, YASM, MASM veya AT&T (GNU) sözdizimine bölünebilir. "
Multimedya Mike zaten öğrendi --adjust-vma; ndisasmeşdeğerdir -oseçeneği.
Diyelim ki sh4kodu sökmek için (Debian'dan bir ikiliyi test etmek için kullandım), bunu GNU ikilileriyle kullanın (hemen hemen tüm diğer çözücüler tek bir platformla sınırlıdır, örneğin x86 ndisasmve ile objconv):
objdump -D -b binary -m sh -EL x
-mMakinedir ve -ELKüçük Endian (için anlamı sh4ebkullanımda -EBya endian mevcut mimarileri için geçerlidir yerine).