我知道otool -tv
,但我宁愿使用 Intel 语法而不是AT& Ts,主要是为了轻松地在书中跟随而不必查看数千个%
和$
。
我也很感激我可能会找到gdb
配置文件的任何提示。
gdb
list
命令与标准GNU
版本的工作方式有何不同?
非常感谢!
(另外,如果你有任何想法,我可以从C - > MIPS找到一个小的反汇编程序,玩起来会非常有趣。但不是必需的!)
答案 0 :(得分:8)
要回答第二个问题,如果代码已经编译成64位和32位的胖二进制文件,则可以使用otool -arch i386 -tv
来反汇编二进制文件的32位片段; otool -arch x86_64 -tv
将为您提供64位部分(在SnowLeopard上,如果没有传递-arch
标志,这也是默认行为。)
另请注意,虽然otool不支持Intel语法,但gdb(set disassembly-flavor intel
)和XCode(首选项 - >调试 - >反汇编样式)可以。
答案 1 :(得分:2)
(我知道这是一个老问题,但是我想为通过搜索引擎来到这里的人们提供最新答案)。
在最新版本的macOS(我正在运行10.14.5)上,有一个objdump
命令是基于LLVM的,不是 来自GNU项目的命令。它提供了(隐藏)选项,可使用Intel语法进行反汇编。例如,/bin/echo
可以如下分解:
objdump -disassemble -x86-asm-syntax=intel /bin/echo
答案 2 :(得分:1)
使用Objdump,您可以使用-d -M intel
进行反汇编,显然-m
可用于指定体系结构。
答案 3 :(得分:0)
您可以使用A2I从AT& T转换为英特尔语法:http://membres.lycos.fr/placr/a2i.html
答案 4 :(得分:0)
对于GDB,在.gdbinit文件中,添加:
设置disassembly-flavor intel
然后它将是gdb的默认语法。