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 中是如何工作的?我找不到任何相关文件。