PIII-PIV (Форматы данных и команды их обработки процессоров Pentium III, Pentium IV), страница 3

2016-07-31СтудИзба

Описание файла

Документ из архива "Форматы данных и команды их обработки процессоров Pentium III, Pentium IV", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "PIII-PIV"

Текст 3 страницы из документа "PIII-PIV"

С инструкциями SSE могут использоваться префиксы замены сегмента и изменения разрядности адреса (влияют на инструкции, обращающиеся к памяти). Использование префиксов изменения разрядности операнда зарезервировано (может привести к непредсказуемым результатам). Префикс Lock вызывает исключение #UD. Из префиксов повтора можно использовать только безусловный (REP) и только для "потоковых" инструкций (с ХММ), Остальные применения префиксов повтора могут привести к непредсказуемым результатам.

В процессоре Pentium 4 набор инструкций получил очередное расширение — SSE2, в основном касающееся добавления новых типов 128-битных операндов для блока ХММ:

• упакованная пара вещественных чисел двойной точности;

• упакованные целые числа: 16 байт, 8 слов, 4 двойных слова или пара учетверенных (по 64 бита) слов.

В процессор введены новые функции целочисленной арифметики SIMD, 128-разрядные для регистров ХММ и такие же 64-разрядные для регистров ММХ; ряд старых инструкций ММХ распространили и на ХММ (в 128-битном варианте); добавлены инструкции преобразований для новых форматов данных, а также расширены возможности "перемешивания" данных в блоке ХММ. Кроме того, расширена поддержка управления кэшированием и порядком исполнения операций с памятью. Инструкции SSE2 предназначены для ЗD-графики, кодирования/декодирования видео, а также шифрования данных.

5. Команды обработки данных

Система команд 32-разрядных процессоров является существенно расширенной системой команд процессоров 8086/80286. Расширения касаются увеличения разрядности адресов и операндов, более гибкой системы адресации, появления принципиально новых типов данных (битовые строки и поля) и команд.

Команды (инструкции) содержат одно- или двухбайтный код инструкции, за которым может следовать несколько байт, определяющих режим исполнения команды, и операнды. Команды могут использовать до трех операндов (или ни одного). Операнды могут находиться в памяти, регистрах процессора или непосредственно в команде. Для 32-разрядных процессоров разрядность слова (word) по умолчанию может составлять 32, а не 16 бит. Это распространяется на многие инструкции, включая и строковые. В реальном режиме и режиме виртуального процессора 8086 по умолчанию используется 16-битная адресация и 16-битные операнды-слова. В защищенном режиме режим адресации и разрядность слов по умолчанию определяются дескриптором кодового сегмента. Перед любой инструкцией может быть указан префикс переключения разрядности адреса или слова. При адресации памяти использование сегментного регистра, предусмотренного командой, в ряде инструкций может подавляться префиксом изменения сегмента (Segment Override).

В системе команд насчитывается несколько сотен инструкций, поэтому в данной работе обзорно рассмотрены все команды обработки данных (блоков процессора АЛУ, FPU, MMX, и XMM), а далее более подробно описаны инструкции, появившиеся в процессорах Pentium 3 (блок XMM — SSE) и Pentium 4 (блок XMM — SSE2).

Инструкции пересылки данных (см. табл) позволяют передавать константы или переменные между регистрами и памятью, а также портами ввода-вывода в различных комбинациях, но в памяти может находиться не более одного операнда. В эту группу отнесены и инструкции преобразования форматов — расширений и перестановки байт. Операции со стеком выполняются словами с разрядностью, определяемой текущим режимом. При помещении в стек слова указатель стека SP уменьшается на число байт слова (2 или 4), при извлечении — увеличивается. "Классические" (8086) инструкции пересылки не влияют на содержимое регистра флагов. Инструкции пересылки по результатам сравнения (CMPXCHG) модифицируют флаг ZF. Новые инструкции условной пересылки (CMOVxx) позволяют сократить число ветвлений в программе.

Таблица. Инструкции пересылки данных

Инструкция Описание

BSWAP Перестановка байт из порядка младший-старший (L-H) в порядок старший-младший (H-L) (486+)

CBW/CWDE Преобразование байта AL в слово АХ (расширение знака AL в АН: АН заполняется битом AL.7) или слова АХ в двойное слово ЕАХ

CMOVA/CMOVNBE Пересылка, если выше "CF ИЛИ ZF)=0) (P6+)

CMOVAE/CMOVNB Пересылка, если не ниже (CF=0) (P6+)

CMOVB/CMOVNAE Пересылка, если ниже (CF=1) (P6+)

CMOVBE/CMOVNA Пересылка, если не выше ((CF ИЛИ ZF)=1) (P6+)

CMOVC Пересылка, если перенос (CF=1) (P6+)

CMOVE/CMOVZ Пересылка, если равно (ZF=1) (P6+)

CMOVG/CMOVNLE Пересылка, если больше (SF=(0F И ZF)) (P6+)

CMOVGE/CMOVNL Пересылка, если больше или равно (SF=0F) (P6+)

CMOVL/CMOVNGE Пересылка, если меньше (ZF0F) (P6+)

CMOVLE/CMOVNG Пересылка, если меньше или равно (SF0F или ZF=0) (P6+)

CMOVNC Пересылка, если нет переноса (CF=0) (P6+)

CMOVNE/CMOVNZ Пересылка, если не равно (ZF=0) (P6+)

CMOVNO Пересылка, если нет переполнения (0F=0) (P6+)

CMOVNP/CMOVPO Пересылка, если нет паритета (нечетность) (P6+)

CMOVNS Пересылка, если неотрицательно (SF=0) (P6+)

CMOVO Пересылка, если переполнение (0F=1) (P6+)

CMOVP/CMOVPE Пересылка, если паритет (четность) (Р6+)

CMOVS Пересылка, если отрицательно (SF=1)(P6+)

CMPXCHG r/in,r Обмен по результату сравнения байта, слова или двойного слова (486+)

CMPXCHG8B m64 Обмен по результату сравнения учетверенного слова (5+)

CWD/CDQ Преобразование слова АХ в двойное слово DX:AX (расширение знака, DX заполняется битом АХ. 15) или двойного слова ЕАХ в учетверенное EDX:EAX

IN Ввод из порта ввода-вывода в AL/(E)AX

MOV Пересылка(копирование)данных

MOVSX Копирование байта/слова со знаковым расширением до слова/ двойного слова(386+)

MOVZX Копирование байта/слова с нулевым расширением до слова/ двойного слова(386+)

OUT Вывод в порт из AL/(E)AX

POP Извлечение слова данных из стека в регистр или память, (E)SP инкрементируется

POPA(POPAll) Извлечение данных из стека в регистры Dl, SI, ВР, ВХ, DX, CX, AX (286+)

POPAD Извлечение данных из стека в регистры EDI, ESI, ЕВР, ЕВХ, EDX, ЕСХ, ЕАХ (386+)

PUSH Помещение слова из регистра или памяти в стек после декремента (E)SP

PUSHA (PUSH All) Помещение в стек регистров АХ, CX, DX, BX, SP (исходное значение), ВР, SI, Dl (286+)

PUSHAD Помещение в стек регистров ЕАХ, ЕСХ, EDX, ЕВХ, ESP (исходное значение), ЕВР, ESI, EDI (386+)

XCHG Обмен данными (взаимный) между регистрами или регистром и памятью

Инструкции ввода-вывода позволяют пересылать как одиночный бант или слово между портом и регистром процессора (инструкции IN и OUT), так и блок байт (слов) между портом и группой смежных ячеек памяти (инструкции INSB/INSW и OUTSB/OUTSW с префиксом повтора, см. ниже). Непосредственная адресация порта в команде обеспечивает доступ только к первым 256 адресам портов, косвенная (через регистр DX) — ко всему пространству ввода-вывода (64 Кбайт). Разрядность операнда и адрес должны согласовываться с физическими возможностями и особенностями поведения адресуемого устройства. При работе с памятью такие нюансы во внимание принимать обычно не приходится.

Инструкции двоичной арифметики выполняют все арифметические действия с байтами, словами и двойными словами, кодирующими знаковые или беззнаковые целые числа. Умножение и деление для 8086 возможны только с аккумулятором, результат для 16-битных операндов расширяется в регистре DX.

Для 286+ возможно двух- и трехадресное умножение с расширенном тилько в старший байт (два байта для 386+).

Таблица. Инструкции двоичной арифметики

Инструкция Описание

ADC Сложение двух операндов с учетом переноса от предыдущей операции

ADD Сложение двух операндов

СМР Сравнение (вычитание без сохранения результата — установка флагов)

DEC Декремент (вычитание 1, но не действует на флаг CF)

DIV Деление беззнаковое

IDIV Деление знаковое

IMUL Умножение знаковое

INC Инкремент (сложение с 1, но не действует на флаг CF)

MUL Беззнаковое умножение

NEG Изменение знака операнда

SBB Вычитание с заемом

SUB Вычитание

XADD Обмен содержимым и сложение (486+)

Инструкции десятичной арифметики являются дополнением к предыдущим. Они позволяют оперировать с неупакованными (биты [7:4] = 0, биты [3:0] содержат десятичную цифру 0-9) или упакованными (биты [7:4] содержат старшую, биты [3:0] — младшую десятичную цифру 0-9) двоичнодесятичными числами. Арифметические операции над этими числами требуют применения инструкций коррекции форматов.

Таблица. Инструкции десятичной арифметики

Инструкция Описание

ААА Десятичная коррекция после сложения двух неупакованных чисел

AAD Десятичная коррекция перед делением неупакованного двузначного числа

ААМ Десятичная коррекция после умножения двух неупакованных чисел

AAS Десятичная коррекция после вычитания двух неупакованных чисел

DAA Десятичная коррекция AL после сложения двух упакованных чисел

DAS Десятичная коррекция AL после вычитания двух упакованных чисел

Инструкции AAD и ААМ допускают обобщенный формат вызова, при котором коррекция выполняется но любому модулю (а не только по модулю 10).

Инструкции логических операций выполняют все функции булевой алгебры над байтами, словами или двойными словами.

Таблица. Инструкции логических операций

Инструкция Описание

AND Логическое И

NOT Инверсия (переключение всех бит)

OR Логическое ИЛИ

XOR Исключающее ИЛИ

Сдвиги и вращения (циклические сдвиги) выполняются над регистром или операндом в памяти. Число позиций, на которое производится сдвиг, берется непосредственно из операнда или регистра CL по модулю 8 для однобайтного операнда и по модулю 16 или 32 для операнда-слова, в зависимости от разрядности данных (32 только для 386+). Биты, выталкиваемые при сдвигах, попадают во флаг CF. При сдвигах влево и простом сдвиге вправо освобождающиеся биты заполняются нулями (инструкции SAL и SHL — синонимы). При арифметическом сдвиге вправо старший бит (знак) сохраняет свое значение. При циклических сдвигах выталкиваемые биты попадают и во флаг CF, и в освобождающиеся позиции. В сдвигах могут участвовать и два операнда (инструкции SHLD и SHRD).

Таблица. Инструкции сдвигов

Инструкция Описание

RCL Циклический сдвиг влево через бит переноса

RCR Циклический сдвиг вправо через бит переноса

ROL Циклический сдвиг влево

ROR Циклический сдвиг вправо

SAL Сдвиг арифметический влево

SAR Сдвиг арифметический (с сохранением старшего бита) вправо

SHL Сдвиг влево

SHR Сдвиг вправо

SHLD Сдвиг влево и вставка данных в освободившиеся позиции (386+)

SHRD Сдвиг вправо и вставка данных в освободившиеся позиции (386+)

Инструкции обработки бит и байт позволяют проверять (копировать в CF) и устанавливать значение указанного операнда, а также искать установленный бит. Битовые операции выполняются над 16-или 32-битным словом памяти или регистром. Инструкции BSF, BSR и ВТ не изменяют значения слова; ВТС, BTR и BTS воздействуют на указанный бит слова. Номер интересующего бита берется из операнда по модулю 16 или 32, в зависимости от разрядности.

Операции с байтами обеспечивают условную установку значений 00h или 01h. Инструкция тестирования может выполняться над байтом, словом или двойным словом.

Таблица. Инструкции обработки бит и байт

Инструкция Описание

BSF Сканирование бит (поиск единичного) вперед

BSR Сканирование бит назад

ВТ Тестирование бита (загрузка в CF)

ВТС Тестирование и изменения значения бита

BTR Тестирование и сброс бита

BTS Тестирование и установка бита

SALC Условная (по CF) установка А1 в FFh или OOh (не документировано, код D6h)

SETA/ Установка байта в 01h, если выше ((CF ИЛИ ZF)=0), иначе в 00h

SETNBE

SETAE/ Установка байта в 01 h, если не ниже (CF=0), иначе в 00h

SETNB/

SETNC

SETB/ Установка байта в 01h, если ниже (CF=1), иначе в 00h

SETNAE/

SETC

SETBE/ Установка байта в 01h, если не выше (CF ИЛИ ZF)=1, иначе в 00h

SETNA

SETE/ Установка байта в 01h, если равно (ZF=1), иначе в 00h

SETZ

SETG/ Установка байта в 01 h, если больше (SF=(OP И ZF)), иначе в 00h

SETNLE

SETQE/ Установка байта в 01h, если больше или равно (SF=OF), иначе в 00h

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее