GNU assembler appears to have some means of controlling the alternative forms of the opcode being emitted for some instructions. E.g.
.intel_syntax noprefix
mov eax, ecx
mov.s eax, ecx
Processing the above code with as test.s -o test.o && objdump -d test.o -M intel
gives the following disassembly:
0: 89 c8 mov eax,ecx
2: 8b c1 mov eax,ecx
We can see that .s
suffix appears to switch 89
opcode to the 8b
version (and appropriately change the ModRM byte).
How does this syntax work in GAS? I can't find any relevant documentation.