Ve skutečnosti neexistuje žádná výhoda jednoho nad druhým. Souhlasím však s tím, že syntaxe Intel je hodně snadněji čitelné. Mějte na paměti, že AFAIK, všechny nástroje GNU mají také možnost používat syntaxi Intel.
Vypadá to, že můžete přimět GDB používat syntaxi Intel pomocí tohoto:
set disassembly-flavor intel
GCC umí syntaxi Intel s -masm=intel
.
Primární syntaxe pro GNU assembler (GAS) je AT&T. Syntaxe Intelu je relativně novým přírůstkem. Sestavení x86 v linuxovém jádře je v syntaxi AT&T. Ve světě Linuxu je to běžná syntaxe. Ve světě MS je syntaxe Intel běžnější.
Osobně nesnáším syntaxi AT&T . Existuje spousta bezplatných assemblerů (NASM, YASM) spolu s GAS, které také podporují syntaxi Intel, takže při syntaxi Intelu v Linuxu nebudou žádné problémy.
Kromě toho je to jen syntaktický rozdíl. Výsledkem obou bude stejný strojový kód x86.
Ve skutečnosti neexistuje žádná výhoda jednoho nad druhým. Nesouhlasím však s tím, že syntaxe Intelu je mnohem snáze čitelná, protože osobně nesnáším syntaxi Intel . Mějte na paměti, že AFAIK, všechny nástroje GNU mají také možnost používat syntaxi 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]
...a se složitějšími instrukcemi je to složitější
'nuff řekl.
PS:Tato odpověď existuje hlavně z důvodu zvýraznění (IMHO) slabin v některých dalších odpovědích, které ve skutečnosti nejsou odpověďmi, ale názory. A samozřejmě tato odpověď je ve skutečnosti pouze můj skromný názor.
PPS:Nenávidím syntaxi Intelu, prostě je mi to jedno.