Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЗ-2-MMX_.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
295.94 Кб
Скачать

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 )

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]