<<
>>

Приложение Система команд процессоровIA-32

Данное приложение содержит описание системы команд процессоров архитектуры IA-32 до Pentium IV включительно. Команды разбиты на 4 группы: целочисленные команды, команды сопроцессора, команды MMX-расширения и команды ХММ-расширения.
В пределах каждой группы команды расположены в алфавитном порядке. Для каждой команды приведены следую- щие данные. ? Схема команды, поясняющая состав и назначение операндов. & Название команды с кратким описанием ее назначения. ⅝ Описание действия команды. Ш Описание флагов после выполнения команды, при этом приводятся сведения только о фла- гах, изменяемых командой, и используются следующие обозначения: D 1 — флаг устанавливается (равен 1); П 0 — флаг сбрасывается (равен 0); ? г — значение флага зависит от результата выполнения команды; П ? — после выполнения команды флаг не определен. Ш Машинные коды для всех возможных сочетаний операндов команды. Описание машинного кода производится в шестнадцатеричном виде — каждый байт машинного представления ко- манды воспроизводится двумя шестнадцатеричными цифрами. При описании машинного кода используются следующие обозначения: П /цифра — здесь цифра (от 0 до 7) представляет содержимое трехразрядного поля reg в бай- те mod r/m, используемое как часть кода операции; П /г — означает, что байт mod r/m команды содержит как регистровый операнд, так и опе- ранд r/m; ? cb, cw, cd, ср — одно·, двух-, четырех- или шестибайтное значение, следующее за полем кода операции и используемое для определения смещения в сегменте кода (и возможное новое значение для сегментного регистра кода); D ib, iw, id — одно-, двух- или четырехбайтный непосредственный операнд команды, кото- рый следует за полем кода операции, байтами mod r/m или sib, при этом код операции определяет, является ли непосредственный операнд знаковым значением, а все слова и двойные слова приводятся в порядке «младший байт по младшему адресу»; П +rb, +rw, +rd — код регистра (от 0 до 7), добавляемый в байт кода операции, приводимого при описании машинного кода первым значением (см.
также рис. 3.1 и табл. 3.3-3.5); ? +i — число (от 0 до 7), используемое в машинном представлении команд сопроцессора, когда один из операндов является регистром SТ(i) из стека регистров сопроцессора (l до- бавляется к одиночному байту кода операции, значение которого приведено при описа- нии машинного кода первым). Ж Машинные коды команды сопровождаются описанием синтаксиса команды для соответствую- щего сочетания операндов. При описании синтаксиса используются следующие обозначения: П rel8 — относительный адрес из диапазона -128...+127, точка отсчета — конец данной ма- шинной команды; П rеllб, ret32 — относительные адреса в пределах сегмента кода, содержащего данную ко- манду, используемые для операндов с размером операнда 16 (usеl6) и 32 (usеЗ2) бита соот- ветственно; П рtrl6:lб и рtrlб:З2 — дальние указатели (обычно на адрес в сегменте кода, отличном от текущего), используемые при установленном атрибуте размера операнда 16 битов и 32 бита соответственно (запись «16:16» или «16:32» означает, что первая часть указателя являет- ся селектором или значением сегментного регистра кода, вторая — смещением в целевом сегменте кода); П r8, rlб, rЗ2 — операнд в одном из регистров размером байт (AL, CL, DL, BL, АН, СН, DН, ВН), слово (АХ, СХ, DХ, ВХ, SР, BP, SI, DI) или двойное слово (ЕАХ, ЕСХ, ЕDХ, ЕВХ, ESP, EBP, ESI, EDI); D i8, ilб, iЗ2 — непосредственный операнд размером байт (-128...+127), слово (-32 768... +32 767) или двойное слово (-2 147 483 648...+2 147 483 647); П m — операнд в памяти размером 16 или 32 бита; П m8, mlб, т32, m48, т64, ml28 — операнд в памяти размером байт, слово, двойное слово, 48/ 64/128 бит; . D r/m8 — байтовый операнд, который содержится либо в одном из регистров размером один байт (AL, CL, DL, BL, АН, СН, DH, ВН), либо в ячейке памяти размером один байт; D r/mlб — операнд в регистре размером в слово (АХ, СХ, DX, BX, SP, BP, SI, DI) или в ячейке памяти размером в слово (используется в командах, для которых атрибут размера опе- ранда равен 16 бит); D r/m32 — операнд в регистре размером в слово (ЕАХ, ЕСХ, EDX, EBX, ESP, EBP, ESI, EDI) или в ячейке памяти размером в двойное слово (используется в командах, для которых атри- бут размера операнда равен 32 битам); П ml6:16, mlб:З2 — операнд в памяти, содержащий дальний указатель в виде двух чисел: число слева соответствует селектору сегмента указателя, второе число является сме- щением в сегменте, на который указывает этот селектор; D mlб&З2, mlб&lб, m32&32 — пары операндов в памяти, каждый элемент которых имеет раз- мер, указанный слева и справа от знака &; Р mоffs8, mоffslб, mоffsЗ2 — переменная (смещение в памяти) типа байт, слово, двойное сло- во, требующаяся для выполнения некоторых вариантов команды mоv (байт mod r/m не используется, адрес задается простым смещением относительно базы сегмента); П sreg — сегментный регистр, кодировка вмашиuиомкоде: ES = 0; CS=· 1; SS = 2; DS - 3; FS = 4; GS = 5; Р m32fp, mб4fр, m8Оfр — операнды в формате сопроцессора (с плавающей точкой) в памяти; Р mlбiпt, mЗ2iпt, mб4iпt — целочисленные операнды в памяти, используемые в командах со- процессора; Р SТ или SТ(О) — верхний элемент стека сопроцессора; Р SТ(i) — г-н элемент стека сопроцессора (t = 0...7); Р rmmхО..
.rmmх7 — операнд в одном из регистров целочисленного расширения ММХ; Р rmmx/m32 — младшая часть (32 бита) MMX-регистра или 32-разрядный операнд в памяти; ? rmmx/m6 4 — ММХ-регистр или 64-разрядный операнд в памяти; D rxmm0... rxmm7 — операнд в одном из регистров расширения ММХ с плавающей точкой (в ХММ-регистре); ' П rxmm/m32 — ХММ-регистр или 32-разрядный операнд в памяти; ' П rxmm/m64 — ХММ-регистр или 64-разрядный операнд в памяти; П rхmm/ml28 — ХММ-регистр или 128-paзpядныйоперанд в памяти. Для экономии места при описании некоторых команд могут быть опущены одна или несколько перечисленных ранее позиций. Например, отсутствие описания действия команды говорит о том, что сведений, приведенных в названии команды с кратким описанием ее назначения, достаточно для ее практического применения. Отсутствие описания флагов означает, что данная команда не изменяет флагов. Некоторые регистры программной модели процессора имеют внутреннюю структуру. Чтобы идентифицировать поле такого регистра, в описании команд оно воспроизводится следу- ющим образом: имя_реrистра.имя_поля.
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Приложение Система команд процессоровIA-32:

  1. Определение команды.
  2. § 4.5. Деятельность команд в организации
  3. Признаки команды.
  4. Пример настройки и реабилитации в футбольной команде
  5. Работа с другими командами
  6. Четыре шага по созданию эффективной команды
  7. Кто становится лидером команды
  8. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  9. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  10. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
  11. § 39 Классификация договоров в отдельных видах. – Римская классификация. – Система прусского закона, французского и австрийского кодекса. – Система русского свода. – Система настоящего изложения.
  12. Тема 15 Правова система і система права. Система законодавства та систематизація нормативно-правових актів
  13. ПРИЛОЖЕНИЯ
  14. Приложения
  15. ПРИЛОЖЕНИЕ
  16. Приложение
  17. Приложение 1.
  18. Приложение 3.
  19. Приложение 4.