Информационные технологииStfw.Ru 🔍

Часть 2. Справочник по командам и архитектуре Pentium.

🕛 18.05.2009, 15:51
Команды MMX расширения (по книге [3])
EMMS Очистка стека регистров. Установка всех единиц в слове тегов.
MOVD mm,m32/ir32 Пересылка данных в младшие 32 бита регистра MMX с заполнением старших бит нулями.
MOVD m32/ir32,mm Пересылка данных из младших 32 бит регистра MMX.
MOVQ mm,mm/m64 Пересылка данных в регистр MMX.
MOVQ mm/m64,mm Пересылка данных из регистра MMX.
PACKSSDW mm,mm/m64 Упаковка со знаковым насыщением двух двойных слов, расположенных в mm, и двух двойных слов mm/m64 в четыре слова, расположенных в mm.
PACKSSWB mm,mm/m64 Упаковка со знаковым насыщением четырех слов, расположенных в mm, и четырех слов mm/m64 в восемь байт, расположенных в mm.
PACKUSWB mm,mm/m64 Упаковка с насыщением четырех знаковых слов, расположенных в mm, и четырех слов mm/m64 в восемь беззнаковых байт, расположенных в mm.
PADDB mm,mm/m64
PADDW mm,mm/m64
PADDD mm,mm/m64 Сложение упакованных байт (слов или двойных слов) без насыщения (с циклическим переполнением).
PADDSB mm,mm/m64
PADDSW mm,mm/m64 Сложение упакованных байт (слов) со знаковым насыщением.
PADDUSB mm,mm/m64
PADDUSW mm,mm/m64 Сложение упакованных байт (слов) с беззнаковым насыщением.
PAND mm,mm/m64 Логическое «И».
PANDN mm,mm/m64 Логическое «И-НЕ».
PCMPEQB mm,mm/m64
PCMPEQD mm,mm/m64
PCMPEQW mm,mm/m64 Сравнение (на равенство) упакованных байт (слов, двойных слов). Все биты элемента результата будут единичными (true) при совпадении соответствующих элементов операндов и нулевыми (false)- при несовпадении.
PCMPGTB mm,mm/m64
PCMPGTD mm,mm/m64
PCMPGTW mm,mm/m64 Сравнение (по величине) упакованных знаковых байт (слов, двойных слов). Все биты элемента результата будут единичными (true), если соответствующий элемент операнда назначения больше элемента операнда источника, и нулевыми (false) в противном случае.
PMADDWD mm,mm/m64 Умножение четырех знаковых слов операнда источника на четыре знаковых слова операнда назначения. Два двойных слова результатов умножения младших слов суммируются и записываются в младшее двойное слово операнда назначения. Два двойных слова результатов умножения старших слов суммируются и записываются в старшее двойное слово операнда назначения.
PMULHW mm,mm/m64 Умножение упакованных знаковых слов с сохранением только старших 16 бит элементов результата.
PMULLW mm,mm/m64 Умножение упакованных знаковых или беззнаковых слов с сохранением только младших 16 бит результата.
POR mm,mm/m64 Логическое «ИЛИ».
PSHIMD mm,imm
PSHIMQ mm,imm
PSHIMW mm,imm PSHIMD представляет инструкции PSLLD, PSRAD и PSRLD с непосредственным операндом-счетчиком.
PSHIMW представляет инструкции PSLLW,PSRAW, PSRLW.
PSHIMQ представляет инструкции PSLLQ и PSRLQ с непосредственным операндом-счетчиком.
PSLLD mm,mm/m64
PSLLQ mm,mm/m64
PSLLW mm,mm/m64 Логический сдвиг влево упакованных слов (двойных, учетверенных) операнда назначения на количество бит, указанных в операнде-источнике, с заполнением младших бит нулями.
PSRAD mm,mm/m64
PSRAW mm,mm/m64 Арифметический сдвиг вправо упакованных двойных (учетверенных) знаковых слов операнда назначения на количество бит, указанных в операнде-источнике, с заполнением младших бит битами знаковых разрядов.
PSRLD mm,mm/m64
PSRLQ mm,mm/m64
PSRLW mm,mm/m64 Логический сдвиг вправо упакованных слов (двойных, учетверенных) операнда назначения на количество бит, указанных в операнде-источнике, с заполнением старших бит нулями.
PSUBB mm,mm/m64
PSUBW mm,mm/m64
PSUBD mm,mm/m64 Вычитание упакованных байт (слов или двойных слов) без насыщения (с циклическим антипереполнением).
PSUBSB mm,mm/m64
PSUBSW mm,mm/m64 Вычитание упакованных знаковых байт (слов) с насыщением.
PSUBUSB mm,mm/m64
PSUBUSW mm,mm/m64 Вычитание упакованных беззнаковых байт (слов) с насыщением.
PUNPCKHBW mm,mm/m64 Чередование в регистре назначения байт старшей половины операнда-источника с байтами старшей половины операнда назначения.
PUNPCKHWD mm,mm/m64 Чередование в регистре назначения слов старшей половины операнда-источника со словами старшей половины операнда назначения.
PUNPCKHDQ mm,mm/m64 Чередование в регистре назначения двойного слова старшей половины операнда-источника с двойным словом старшей половины операнда назначения.
PUNPCKLBW mm,mm/m64 Чередование в регистре назначения байт младшей половины операнда-источника с байтами младшей половины операнда назначения.
PUNPCKLWD mm,mm/m64 Чередование в регистре назначения слов младшей половины операнда-источника со словами младшей половины операнда назначения.
PUNPCKLDQ mm,mm/m64 Чередование в регистре назначения двойного слова младшей половины операнда-источника с двойным словом младшей половины операнда назначения.
PXOR mm,mm/m64 Исключающее «ИЛИ».






Приложение 3. Защищенный режим микропроцессора Pentium
В главе 3.6 мы уже говорили о схеме преобразования логического адреса в физический адрес. Здесь мы дадим информацию о некоторых структурах, используемых в защищенном режиме. В отличие от реального режима, сегментные регистры содержат в защищенном режиме не адреса, а селекторы. Рассмотрим структуру селектора.
0-1-й биты, запрошенный программой уровень привилегий.
2-й бит, определяет, использовать глобальную таблицу дескрипторов GDT (0) или локальную таблицу дескрипторов LDT (1).
3-16-й биты, индекс дескриптора в таблице. Дескриптор для защищенного режима - это 64-битная структура, которая может описывать сегмент кода, сегмент данных, сегмент состояния задачи, шлюз вызова, ловушки, прерывания или задачи. Дескриптор в глобальной дескрипторной таблице может описывать локальную дескрипторную таблицу.


Дескриптор кода и данных





Базовый адрес сегмента содержит физический адрес сегмента.
Предел содержит размер сегмента в байтах, уменьшенный на единицу.
Описание других битов.
6-й байт. Биты 0-3 определяют биты 16-19 предела. Бит 4 зарезервирован для операционной системы. Бит 5 равен 0. Бит 6 - разрядность, 0 - 16-битный, 1 - 32-битный. Бит 7 - гранулярность, 0 - лимит в байтах, 1 - лимит в 4-килобайтных величинах.
5-й байт. Бит - 0, если 1, то к сегменту было обращение. Бит 1 - разрешение чтения для кода, записи для данных. Бит 2 - бит подчиненности для кода, бит расширения для данных. Бит 3 - тип сегмента (0 - данные, 1 - код). Бит 4 - тип дескриптора (1 - не системный). Биты 5-6 - уровень привилегий дескриптора. Бит 7 - бит присутствия сегмента.

Другие дескрипторы
Если в дескрипторе бит 4 (байт 5) равен 0, то дескриптор называется системным. В этом случае биты 0-3 определяют один из возможных типов дескрипторов.
0 - зарезервированный тип.
1 - свободный 16-битный TSS (TSS - сегмент состояния задачи).
2 - дескриптор таблицы LDT.
3 - занятый 16-битный TSS.
4 - 16-битный шлюз вызова.
5 - шлюз задачи.
6 - 16-битный шлюз прерывания.
7 - 16-битный шлюз ловушки.
8 - зарезервировано.
9 - свободный 32-битный TSS.
10 - зарезервировано.
11 - занятый 32-битный TSS.
12 - 32-битный шлюз вызова.
13 - зарезервировано.
14 - 32-битный шлюз прерывания.
15 - 32-битный шлюз ловушки.

Команды CALL или JMP на адрес с селектором, указывающим на дескриптор шлюза, приводит к передаче управления по адресу, указанному в дескрипторе. Если селектор указывает на шлюз задачи, то это приводит к переключению задач. Обычные же переходы JMP, CALL, RET, IRET возможны лишь к сегментам с тем же уровнем привилегий, либо более низким уровнем привилегий.
Переключение задач Состояние каждой задачи (значение всех регистров, связанных с данной задачей) хранится в сегменте состояния задачи (TSS), на который указывает адрес в регистре задачи. При переключении задач достаточно загрузить новый селектор в регистр задачи, и состояние старой задачи автоматически сохранится в TSS, в процессор же загрузится состояние новой задачи.

Четырехуровневая система привилегий Уровни привилегий нумеруются от 0 до 3. Номер 3 является самым низким уровнем привилегий. Нулевой привилегией обладает ядро операционной системы. Уровни привилегий относятся к дескрипторам, селекторам и задачам. В регистре флагов имеется поле привилегий ввода-вывода, которое регулирует управление доступом к инструкциям ввода-вывода. Уровень привилегий задачи определяется двумя младшими битами сегмента CS. При страничной адресации имеется всего два уровня доступа - 3 и 0.

Страничное управление памятью Механизм со страничным управлением памятью включается установкой бита PG в регистре CR0. Регистр CR2 хранит линейный адрес отказа и адрес памяти, по которому был обнаружен последний отказ страницы. Регистр CR3 хранит физический адрес каталога страниц. Младшие 12 бит этого регистра всегда равны нулю (выравнивание по границе страниц). Каталог страниц состоит из 32-битных элементов и имеет длину 4 Кб.


20 старших бит адреса таблицы следующего уровня. Резерв 3 бита. G P
S D A P
C
D P
W
T U
/
S R
/
W P
Каждая таблица страниц также имеет размер 4 Кб и элементы аналогичного формата. Но эти элементы содержат базовый адрес самих страниц и атрибуты страниц. Физический адрес собирается из базового адреса и младших 12 бит линейного адреса. Значение атрибутов страниц:
G - глобальная страница, страница не удаляется из буфера.
PS - размер страницы. Если 1, то размер страницы 2 или Mb.
D - грязная страница. Устанавливается в 1 при записи на страницу.
A - бит доступа. Устанавливается в 1 при любом обращении к странице.
PCD - бит запрещения кэширования.
PWT - бит разрешения сквозной записи.
U/S - страница или таблица доступна для программ с уровнем доступа 3.
R/W - страница/таблица доступна для записи.
P - страница/таблица присутствуют.

Компьютеры и периферия   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉