首页 > 解决方案 > 为什么 gcc 在一条指令中发出 0x0(%r13) 而在另一条指令中发出 (%r13)?

问题描述

我正在调试一段具有以下指令的代码。

mov    %esi,0x0(%r13)

然后在另一个地方,我看到这样的指令:

mov    %esi,(%r13)

我认为前者将esi寄存器的内容移动到由r13 + 0x0. 按照这种逻辑,后者也应该产生相同的效果。

  1. 这些指令之间有什么区别吗?

  2. 为什么 gcc 写相同的东西不同?

编辑:反汇编是使用生成的objdump -S

标签: gccassemblyx86-64att

解决方案


推荐阅读