Realmente no hay ventaja para uno sobre el otro. Sin embargo, estoy de acuerdo en que la sintaxis de Intel es mucha más fácil de leer. Tenga en cuenta que, AFAIK, todas las herramientas GNU también tienen la opción de usar la sintaxis Intel.
Parece que puedes hacer que GDB use la sintaxis de Intel con esto:
set disassembly-flavor intel
GCC puede hacer sintaxis de Intel con -masm=intel
.
La sintaxis principal del ensamblador GNU (GAS) es AT&T. La sintaxis de Intel es una adición relativamente nueva. El ensamblaje x86 en el kernel de Linux está en la sintaxis de AT&T. En el mundo de Linux, es la sintaxis común. En el mundo de MS, la sintaxis de Intel es más común.
Personalmente, odio la sintaxis de AT&T . Hay muchos ensambladores gratuitos (NASM, YASM) junto con GAS que también son compatibles con la sintaxis de Intel, por lo que no habrá ningún problema con la sintaxis de Intel en Linux.
Más allá de eso, es solo una diferencia sintáctica. El resultado de ambos será el mismo código de máquina x86.
Realmente no hay ventaja para uno sobre el otro. Sin embargo, no estoy de acuerdo con que la sintaxis de Intel sea mucho más fácil de leer, porque personalmente odio la sintaxis de Intel . Tenga en cuenta que, AFAIK, todas las herramientas GNU también tienen la opción de usar la sintaxis Intel.
at&t noprefix intel
mov eax, -4(ebp,edx,4) mov DWORD PTR[-4 +ebp +edx *4], eax
mov eax, -4(ebp) mov DWORD PTR[-4 +ebp], eax
mov edx, (ecx) mov DWORD PTR[ecx], edx
lea ( ,eax,4), eax lea eax, DWORD PTR[8 + eax*4]
lea (eax,eax,2), eax lea eax, DWORD PTR[eax*2+eax]
...y se vuelve más complicado con instrucciones más complejas
'Nuff dijo.
PD:Esta respuesta existe principalmente por el motivo de resaltar (en mi humilde opinión) las debilidades en algunas otras respuestas, que en realidad no son respuestas, sino opiniones. Y, por supuesto, esta respuesta en realidad es solo mi humilde opinión.
PPS:no odio la sintaxis de Intel, simplemente no me importa.