- AT&T синтаксис
AT&T-синтаксис — один из форматов записи мнемоники инструкций процессора.
Особенности
Отличия AT&T-ассемблера(as) от 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 используется для (8-bit) байта, w для (16-bit) слова, и l для (32-bit) двойного слова, почти у каждой команды особое окончание
** b — операнды размером в 1 байт
** w — операнды размером в 1 слово (2 байта)
** l — операнды размером в 4 байта movb %al,%ah movw %ax,%bx movl %ebx,%eax
* Порядок операндов — вначале источник, затем приёмник, а не наоборот, как в синтаксисе Intel. Например: mov eax,ebx (Intel) movl %ebx,%eax (AT&T)
* числовые константы имеют следующую форму записи 20h (Intel) $0x20 (AT&T, знак доллар в начале)movl $0x10,%ebx (AT&T)
* для записи/считывания значения из определённого адреса в регистр знак доллара отсутствует movl 0xffff,%eax
* сегмент.смещение 00:0FFh (Intel) 00.$0xFF (AT&T)
См. также
* Intel-синтаксис
* Язык ассемблера
Wikimedia Foundation. 2010.