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)


См. также

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home