Non c'è davvero alcun vantaggio per l'uno rispetto all'altro. Sono d'accordo però che la sintassi Intel è molto più facile da leggere. Tieni presente che, AFAIK, tutti gli strumenti GNU hanno la possibilità di utilizzare anche la sintassi Intel.
Sembra che tu possa fare in modo che GDB utilizzi la sintassi Intel con questo:
set disassembly-flavor intel
GCC può eseguire la sintassi Intel con -masm=intel
.
La sintassi primaria per GNU assembler (GAS) è AT&T. La sintassi Intel è un'aggiunta relativamente nuova. L'assembly x86 nel kernel Linux è nella sintassi AT&T. Nel mondo Linux, è la sintassi comune. Nel mondo MS, la sintassi Intel è più comune.
Personalmente, odio la sintassi AT&T . Ci sono molti assemblatori gratuiti (NASM, YASM) insieme a GAS che supportano anche la sintassi Intel, quindi non ci saranno problemi con la sintassi Intel in Linux.
Oltre a ciò, è solo una differenza sintattica. Il risultato di entrambi sarà lo stesso codice macchina x86.
Non c'è davvero alcun vantaggio per l'uno rispetto all'altro. Non sono d'accordo però sul fatto che la sintassi Intel sia molto più facile da leggere, perché personalmente odio la sintassi Intel . Tieni presente che, AFAIK, tutti gli strumenti GNU hanno la possibilità di utilizzare anche la sintassi 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]
...e diventa più complicato con istruzioni più complesse
'nuff ha detto.
PS:Questa risposta esiste principalmente per evidenziare (IMHO) i punti deboli in alcune altre risposte, che in realtà non sono risposte, ma opinioni. E ovviamente questa risposta in realtà è solo la mia modesta opinione.
PPS:Non odio la sintassi Intel, semplicemente non mi interessa.