GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einschränkungen der Intel-Assembly-Syntax im Vergleich zu AT&T

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.


Linux
  1. Überprüfung der PHP-Syntax.

  2. So überprüfen Sie die Syntax von Sudoers

  3. Weniger Befehls- und Syntaxhervorhebung?

  4. Cl in Intel öffnen?

  5. Einschränkungen der E-Mail-Größe

Passen Sie einen Intel NUC mit Linux an

Syntax und Beispiele für Bash-Case-Anweisungen

Bash If Else Syntax mit Beispielen

Wie wird die Syntaxhervorhebung in einer Datei angezeigt?

Syntax der Loggedfs-Konfigurationsdatei?

Aktivieren Sie die Syntaxhervorhebung in Vim