Es gibt wirklich keinen Vorteil gegenüber dem anderen. Ich stimme jedoch zu, dass die Intel-Syntax viel ist einfacher zu lesen. Denken Sie daran, dass AFAIK alle GNU-Tools die Option haben, auch die Intel-Syntax zu verwenden.
Es sieht so aus, als könnten Sie GDB dazu bringen, Intel-Syntax zu verwenden:
set disassembly-flavor intel
GCC kann Intel-Syntax mit -masm=intel
ausführen .
Die primäre Syntax für den GNU-Assembler (GAS) ist AT&T. Die Intel-Syntax ist eine relativ neue Ergänzung. x86-Assembly im Linux-Kernel ist in AT&T-Syntax. In der Linux-Welt ist es die übliche Syntax. In der MS-Welt ist die Intel-Syntax gebräuchlicher.
Ich persönlich hasse AT&T-Syntax . Es gibt viele freie Assembler (NASM, YASM) zusammen mit GAS, die auch die Intel-Syntax unterstützen, sodass es keine Probleme geben wird, die Intel-Syntax unter Linux auszuführen.
Darüber hinaus ist es nur ein syntaktischer Unterschied. Das Ergebnis von beiden ist derselbe x86-Maschinencode.
Es gibt wirklich keinen Vorteil gegenüber dem anderen. Ich bin jedoch nicht der Meinung, dass die Intel-Syntax viel einfacher zu lesen ist, weil ich persönlich die Intel-Syntax hasse . Denken Sie daran, dass AFAIK alle GNU-Tools die Option haben, auch die Intel-Syntax zu verwenden.
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]
...und es wird komplizierter mit komplexeren Anweisungen
Nichts gesagt.
PS:Diese Antwort existiert hauptsächlich, um (IMHO) Schwächen in einigen anderen Antworten hervorzuheben, die eigentlich keine Antworten, sondern Meinungen sind. Und natürlich ist diese Antwort in Wirklichkeit nur meine bescheidene Meinung.
PPS:Ich hasse Intel-Syntax nicht, es ist mir einfach egal.