Il n'y a vraiment aucun avantage à l'un par rapport à l'autre. Je suis d'accord cependant que la syntaxe Intel est beaucoup plus facile à lire. Gardez à l'esprit que, autant que je sache, tous les outils GNU ont également la possibilité d'utiliser la syntaxe Intel.
Il semble que vous puissiez faire en sorte que GDB utilise la syntaxe Intel avec ceci :
set disassembly-flavor intel
GCC peut faire la syntaxe Intel avec -masm=intel
.
La syntaxe principale de l'assembleur GNU (GAS) est AT&T. La syntaxe Intel est un ajout relativement nouveau. L'assemblage x86 dans le noyau Linux est dans la syntaxe AT&T. Dans le monde Linux, c'est la syntaxe courante. Dans le monde MS, la syntaxe Intel est plus courante.
Personnellement, je déteste la syntaxe AT&T . Il existe de nombreux assembleurs gratuits (NASM, YASM) ainsi que GAS qui prennent également en charge la syntaxe Intel, il n'y aura donc aucun problème à utiliser la syntaxe Intel sous Linux.
Au-delà, c'est juste une différence syntaxique. Le résultat des deux sera le même code machine x86.
Il n'y a vraiment aucun avantage à l'un par rapport à l'autre. Je ne suis pas d'accord avec le fait que la syntaxe Intel est beaucoup plus facile à lire, car personnellement je déteste la syntaxe Intel . Gardez à l'esprit que, autant que je sache, tous les outils GNU ont également la possibilité d'utiliser la syntaxe 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]
...et ça se complique avec des instructions plus complexes
'nuff a dit.
PS:Cette réponse existe principalement pour mettre en évidence (IMHO) les faiblesses de certaines autres réponses, qui ne sont en fait pas des réponses, mais des opinions. Et bien sûr cette réponse n'est en réalité que mon humble avis.
PPS :Je ne déteste pas la syntaxe Intel, je m'en fiche.