AT&T-синтаксис
Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску
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, знак доллар в начале)
movl $0x10,%ebx (AT&T)
- для записи/считывания значения из определённого адреса в регистр знак доллара отсутствует
movl 0xffff,%eax
- сегмент.смещение
00:0FFh (Intel) 00.$0xFF (AT&T)
См. также
Ошибка: неверное или отсутствующее изображение |
Для улучшения этой статьи желательно?:
|
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....
→