【发布时间】:2018-05-20 06:26:51
【问题描述】:
GNU 汇编器似乎有一些方法可以控制为某些指令发出的操作码的替代形式。例如
.intel_syntax noprefix
mov eax, ecx
mov.s eax, ecx
使用as test.s -o test.o && objdump -d test.o -M intel 处理上述代码会得到以下反汇编:
0: 89 c8 mov eax,ecx
2: 8b c1 mov eax,ecx
我们可以看到.s 后缀似乎将89 操作码切换为8b 版本(并适当更改了ModRM 字节)。
这种语法在 GAS 中是如何工作的?我找不到任何相关文档。
【问题讨论】:
-
按照措辞,这在技术上是题外话,因为您要求的是文档链接,而不是直接询问有关它们如何工作的更多详细信息。 (您可以通过使摘要+文档链接成为一个很好的答案的方式来做到这一点)。无论如何,好问题,即使它违反了规则,它也应该保持开放,IMO。
-
@Mogsdad:将其改写为主题,并投票重新开放。
标签: assembly x86 gnu-assembler objdump intel-syntax