9

我知道otool -tv,但我更愿意使用Intel语法而不是 AT&T,主要是为了轻松地在一本书中学习,而不必查看数千个%' 和$'。

我也很感激任何关于我可以在哪里找到gdb配置文件的提示。

编辑:我忘记了:我正在运行一个 64 位处理器,但想知道是否也可以反汇编成 32 位程序集?不仅如此,OSX 的gdb命令list与标准GNU版本的工作方式有什么不同吗?

非常感谢!

(另外,如果你知道我在哪里可以找到一个来自 C -> MIPS 的小反汇编程序,那玩起来会很有趣。但不是必须的!)

4

5 回答 5

8

(我知道这是一个老问题,但我想为通过搜索引擎来到这里的人提供更新的答案)。

在最新版本的 macOS(我运行的是 10.14.5)上,有一个objdump命令可用,它基于 LLVM,而不是来自 GNU 项目的命令。它提供了一个(隐藏的)选项来使用 Intel 语法进行反汇编。例如/bin/echo可以拆解如下:

objdump -disassemble -x86-asm-syntax=intel /bin/echo
于 2019-07-04T14:47:50.497 回答
7

要回答您的第二个问题,如果代码已编译为具有 64 位和 32 位的胖二进制文件,您可以使用otool -arch i386 -tv反汇编二进制文件的 32 位切片;将为您提供 64 位部分(在 SnowLeopard 上,如果未传递标志otool -arch x86_64 -tv,这也是默认行为)。-arch

另请注意,虽然 otool 不支持 Intel 语法,但 gdb ( set disassembly-flavor intel) 和 XCode (Preferences -> Debugging -> Disassembly Style) 支持。

于 2009-11-13T17:20:58.267 回答
1

使用Objdump可以反汇编-d -M intel,显然-m可以用来指定架构。

于 2009-11-13T09:50:34.857 回答
1

对于 GDB,在您的 .gdbinit 文件中,添加:

设置拆解-风味intel

那么它将是 gdb 的默认语法。

于 2011-06-17T01:04:04.143 回答
0

您可以使用 A2I 从 AT&T 转换为 Intel 语法:http ://membres.lycos.fr/placr/a2i.html

于 2009-11-13T08:51:40.753 回答