Diferenças entre a sintaxe Intel e AT&T (Windows e Linux em debugger) em Assembly

Diferenças básicas entre as duas sintaxes em assembly:

Intel não usa sufixos, nem prefixos e a instrução executa os argumentos da direita para esquerda, no exemplo, colocar o valor 1 no registrador eax:

mov eax,1

AT&T usa sufixos na instrução (l para long, w para word e b para byte) e prefixos ($ para valores imediatos e % para registradores) e executa os argumentos da esquerda para direita:

movl $1, %eax

Intel ainda pode usar  byte ptr, word ptr, dword ptr para substituir os sufixos da AT&T quando o tamanho dos registradores usados não assumam o tipo de dados:

mov     eax, dword ptr [ebx]

Intel usa hexadecimais com a letra H ao final do número:

0ffh

AT&T usa o formato 0x:

0x0ff

Operações com registradores na sintaxe intel:

[ebx + 3]

na sintaxe AT&T:

3(%ebx)

Enjoy!