Синтаксис AT&T або AT&T-синтаксис — один з форматів запису мнемоніки інструкцій процесора.
Особливості Відмінності AT&T-асемблера (gas) від Intel-асемблера (MASM, TASM, FASM, NASM):
Коментар починається зі знака "#", а не ";"; у свою чергу знак ";" відокремлює команди і дозволяє записувати декілька команд в одному рядку. Відсутність префікса операнда вказує на адресу в пам'яті; тому movl foo,%eax поміщає адресу змінної foo в регістр %eax, а movl $foo,%eax поміщає в %eax вміст змінної foo. Назви регістрів починаються зі знака %, тобто %eax, %dl, замість eax, dl тощо. Це дозволяє включати в код зовнішні змінні C, не побоюючись помилок і не використовуючи префіксів з підкресленнями (_). Наприклад:
%eax, %ebx, %ecx, %edx
Розмір операнда визначається суфіксом інструкції. Суфікси: b (від byte) — операнди розміром 1 байт w (від word)— операнди розміром 1 слово (2 байти) l (від long) — операнди розміром 4 байти q (від quad) — операнди розміром 8 байт t (від ten) — операнди розміром 10 байт o (від octo) — операнди розміром 16 байт movb %al,%ah movw %ax,%bx movl %ebx,%eax
Порядок операндів — спочатку джерело, потім приймач, а не навпаки, як в синтаксисі Intel. Наприклад:
mov eax,ebx (Intel) movl %ebx,%eax (AT&T)
числові константи мають таку форму запису
20h (Intel) $0x20 (AT&T, знак "долар" на початку)
mov ebx, 10h (Intel) movl $0x10,%ebx (AT&T)
для запису/зчитування значення з певної адреси в регістр знак долара відсутній
movl 0xffff,%eax
сегмент.зміщення (тільки в реальному режимі) :
00:0FFh (Intel) 00.$0xFF (AT&T)
регістр.зміщення :
es:[bx+0x1a] (Intel) %es.0x1a(%bx) (AT&T) Вказівки на індексні методи адресації відрізняються тим, що використовуються круглі, а не квадратні дужки:
sub eax,[ebx+ecx*4h-20h] (Intel) subl -0x20(%ebx,%ecx,0x4),%eax (AT&T) # відняти від EAX значення (ECX * 4) + EBX - 32
Відрізняються мнемоніки деяких команд (наприклад, cdq називається cltd в AT&T).
Відрізняються команди асемблера (такі, як оголошення констант, резервування місця).
Див. також Синтаксис Intel Мова асемблера AT&T Синтаксис асемблера X86
Посилання Книга з асемблера в Linux у Вікіпідручнику Використання асемблера в Linux