I know of otool -tv
, but I would much rather use the Intel syntax rather than AT&Ts, mainly to easily follow along in a book and not have to look over
For GDB, in your .gdbinit file, add:
set disassembly-flavor intel
then it will be the default syntax for gdb.
You can use A2I to translate from AT&T to Intel syntax: http://membres.lycos.fr/placr/a2i.html
With Objdump you can disassemble with -d -M intel
, and apparently -m
can be used to specify the architecture.
(I know this is an old question, but I want to provide an updated answer for people who come here through search engines).
On recent versions of macOS (I'm running 10.14.5), an objdump
command is available, which is based on LLVM and is not the one from the GNU project. It offers a (hidden) option to disassemble using Intel syntax. For example, /bin/echo
can be disassembled as follows:
objdump -disassemble -x86-asm-syntax=intel /bin/echo
To answer your second question, if the code has been compiled into a fat binary with both 64-bit and 32-bit, you can use otool -arch i386 -tv
to disassemble the 32-bit slice of the binary; otool -arch x86_64 -tv
will give you the 64-bit portion (on SnowLeopard, this is also the default behavior if no -arch
flag is passed).
Also note that while otool doesn't support the Intel syntax, gdb (set disassembly-flavor intel
) and XCode (Preferences -> Debugging -> Disassembly Style) do.