【问题标题】:Is the syntax of assembly instructions processor dependent?汇编指令的语法是否依赖于处理器?
【发布时间】:2015-05-22 10:25:53
【问题描述】:

我在 64 位 SUSE Linux 上运行 32 位 C 应用程序。 我刚刚在 gdb 中反汇编了它的一个函数,我在函数开始时看到了下面的程序集,即函数序言:

0x08048c0e <+0>:     push   %ebp
0x08048c0f <+1>:     mov    %esp,%ebp

汇编指令mov指令语法我猜是:

mov <Destination>, <Source>

但是看到上面的汇编代码好像改成了

mov <Source>, <Destination>

汇编指令的语法是否依赖于处理器?

【问题讨论】:

  • gcc, gas, objdump 等默认使用AT&amp;T 汇编语法。您可以将它们设置为使用带有适当命令行选项的 intel 样式语法:gcc -masm=intelobjdump -M intel...
  • 感谢 EOF。它消除了疑虑。
  • 标题问题,汇编指令的语法是否依赖于处理器?,由于不同的处理器有不同的汇编指令,显然答案是“是” >。但是相同的处理器可以有不同的汇编语法,这取决于所使用的汇编工具。

标签: assembly


【解决方案1】:

当您的反汇编以 AT&T 格式显示时,您所描述的通常称为“Intel”语法。

如果您使用的是 GDB,您可以执行 set disassembly-flavor intel 命令来更改它。事实上,您甚至可以将其放入您正在调试的本地目录中的.gdbinit 文件中,或者,如果您希望对其进行更一般的配置,则可以将其放入您的主目录中。然后会自动设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 2011-05-03
    • 2020-09-22
    • 1970-01-01
    • 2019-11-27
    • 2019-12-10
    • 1970-01-01
    相关资源
    最近更新 更多