статьиGNU Free Documentation License материалы взяты из Википедии Статья была изменена. Оригинал статьи.

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)

Указания на индексные методы адресации отличаются тем, что используются круглые, а не квадратные скобки:

sub eax,[ebx+ecx*4h-20h] (Intel)
subl -0x20(%ebx,%ecx,0x4),%eax

Отличаются мнемоники некоторых команд (например, cdq называется cltd в AT&T).

Отличаются команды ассемблера (такие, как объявление констант, резервирование места).

[править] См. также

Пространства имён

Варианты
Действия
На других языках