如何告诉objdump
以Intel语法而不是默认的AT&T语法输出汇编代码?
你需要的是 -M intel
。使用如下。
objdump -M intel -d program_name
objdump -M intel intel-mnemonic -D <程序的目标文件>
-M intel
已经处理了这个问题。尝试反汇编序列 0f b7 c3
- 使用 -M intel
,将得到 movzx eax,bx
,而不使用它,objdump 默认会返回 AT&T 语法,你会得到 movzwl %bx,%eax
。 - Daniel Kamil Kozar-M intel-mnemonic
意味着是 intel
,而不是反过来。虽然我仍不知道两者之间的区别。我使用了命令 objdump -M intel -d file > intel
,objdump -M intel-mnemonic -d file > intel-mnemonic
,接着用 diff intel intel-mnemonic
进行比较,但没有发现任何差异。为了确保其它部分也没有差异,我还尝试了使用 -D
替换 -d
命令。 - RastaJedi
-x86-asm-syntax=intel
。叹气。 - John Clementsobjdump
永久默认使用选项-M intel
? - vitsoftobjdump
不支持通过环境变量或rc
文件传递“默认”参数。最好的方法似乎是在您的shell中创建一个函数,例如Bash中的objdump(){ / usr / bin / objdump -M intel "$ @"}
。当然,这也有其自身的问题,例如如果您实际上没有反汇编任何东西,我不知道objdump
是否会抱怨-M intel
。 - Daniel Kamil Kozar-Mintel
。这将在 LLVM 13 中实现。 - thakis