- •Севастопольский национальный университЕт ядерной энергии и промышленности инструктивно-методические указания для проведения лабораторного занятия №2
- •Заведующий кафедрой кс
- •Лабораторное занятие №2
- •1Теоретический раздел
- •2.1 Модель целочисленного mmx-расширения
- •2.3 Особенности команд mmx-расширения
- •2.4 Команды пересылки
- •1.1Команды сложения и вычитания
- •1.2Команды умножения
- •1.3Команды сравнения
- •1.4 Команды логических операций
- •1.5Команды сдвига
- •1.6Команды упаковки и распаковки
- •2Порядок выполнения работы
- •4. Процедуры вычисления выражений.
- •3Содержание отчета
- •4Контрольные вопросы
2.3 Особенности команд mmx-расширения
Важное отличие ММХ-команд от обычных команд процессора в том, как они реагируют на ситуации переполнения и заема. В ситуациях, когда результат арифметической операции выходит за размер разрядной сетки исходных операндов, производится усечение старших бит результата и возвращаются только те биты, которые умещаются в пределах исходного операнда. Этот принцип формирования результата называется арифметикой с циклическим переносом (wraparound arithmetic). Некоторые ММХ-команды в подобной ситуации действуют иначе. В случае выхода значения результата за пределы операнда, в нем фиксируется максимальное или минимальное значение. Такой принцип формирования результата называется арифметикой с насыщением (Saturation arithmetic). MMX-расширение имеет команды, которые выполняют арифметические операции с использованием обоих принципов. При этом среди них есть команды, учитывающие знаки (значения старших бит) элементов операндов. Рассмотрим на примерах, как формируются результаты в ММХ-командах сложения и вычитания, использующих принцип насыщения.
Пример 2.1. Сложение чисел (беззнаковое насыщение)
254=11111110 + 5=00000101 = 259<>11111111
Результат ММХ-сложения с беззнаковым насыщением равен 255. При сложении командами микропроцессора add и adс, использующими принцип циклического переноса, результат равен 00000011=3, а флаг сf устанавливается в 1. Это свидетельствует о факте переполнения.
Пример 2.2. Сложение чисел (знаковое насыщение)
+254=11111110
+5=00000101
=
259<>01111111
Результат ММХ-сложения со знаковым насыщением двух положительных чисел равен 127. При сложении командами микропроцессора add и adс, использующими принцип циклического переноса, результат равен 00000011=3, а флаг сf установлен в 1. Это свидетельствует о факте переполнения.
Пример 2.3. Вычитание чисел (беззнаковое насыщение)
05=00000101
-
10=00001010
=
-5<> 00000000
Пример 2.4. Вычитание чисел (знаковое насыщение)
+05=00000101 - +10=000001010 = -5 <> 10000000
Результат ММХ-вычитания со знаковым насыщением двух чисел равен 80h. Это минимально возможное отрицательное число размером в байт. При вычитании командами микропроцессора sub и sbb, использующими принцип циклического переноса, результат равен 11111011=-5 в дополнительном коде, а флаг cf установлен в 1. Это свидетельствует о факте воображаемого заема единицы из старшего разряда. Подобные рассуждения относятся и к некоторым другим ММХ-командам, не являющихся арифметическими. В табл. 2.1 представлены граничные значения насыщения для всех четырех типов данных MMX-расширения.
Таблица 2.1. Граничные значения насыщения ММХ-данных
Типы ММХ-данных |
Диапазон граничных значений (с насыщением) |
Байт без знака |
0...255 (00h...0ffh) |
Слово без знака |
0...65535 (00h...0ffffh) |
Двойное слово без знака |
0...4294967295 (00000000...0ffffffffh) |
Учетверенное слово без знака |
(0000000000000000...0ffffffffffffffffh) |
Байт со знаком |
-128...127 (80h...7fh) |
Слово со знаком |
-32768...32767 (8000h...7fffh) |
Двойное слово со знаком |
-2147483648...2147483647(80000000...7fffffffh) |
Учетверенное, слово со знаком |
(8000000000000000... 7fffffffffffffffh ) |
