Целочисленное MMX расширение

Трансцендентные функции

Тригонометрические.

Команда Описание
FCOS Floating-point calculation of COSine. Косинус. ST(0) = COS(ST(0)). Содержимое в ST(0) интерпретируется как угол в радианах.
FPTAN Floating-point Partial TANgent. Частичный тангенс. Содержимое в ST(0) интерпретируется как угол в радианах. Значение тангенса возвращается на место аргумента, а затем в стек включается 1.
FPATAN Floating-point Partial ArcTANgent. Частичный арктангенс. Вычисляется функция Arctg(ST(1)/ST(0)). После вычисления функции происходит выталкивание из стека, после чего значение функции помещается в вершину стека
FSIN Floating-point calculation of SINe. Синус. ST(0) = SIN(ST(0)). Содержимое в ST(0) интерпретируется как угол в радианах.
FSINCOS Floating-point calculation of SINe and COSine. Синус и косинус. ST(0) = SIN(ST(0)) и ST(1) = COS(ST(0))

Логарифмы и степени

Команда Описание
F2XM1 Floating-point 2X minus 1 Вычисление 2X - 1. ST(0) = 2^ST(0) - 1.
FYL2X Floating-point compute Y*Log2(X) Вычисление Y*LOG2(X). Исходные операнды предварительно должны быть занесены в стек ST(0) = Y, ST(1) = X. Резкльтат помещается в ST(1). Затем происходит выталкивание из стека, и результат оказывается в вершине стека ST(0).
FYL2XP1 Floating-point compute Y*Log2(X Plus 1) Вычисление Y*LOG2(X + 1). Исходные операнды предварительно должны быть занесены в стек ST(0) = Y, ST(1) = X. Резкльтат помещается в ST(1). Затем происходит выталкивание из стека, и результат оказывается в вершине стека ST(0).

Обработка данных MMX-расширения может выполняться с использованием:

· циклической арифметики (wraparound arithmetic),

· арифметики с насыщением (saturation arithmetic).

Большинство команд технологии ММХ обрабатывают данные по правилам циклической арифметики, а некоторые команды задействуют арифметику с насыщением. Если команда задействует циклическую арифметику (другое название — арифметика с циклическим переносом) и результат операции выходит за двоичную разрядную сетку используемого типа данных, то «лишние» старшие биты результата отбрасываются.

Если команда использует арифметику с насыщением и результат операции превышает максимальное представимое значение, то в выходной операнд записывается это максимальное значение (происходит «насыщение»). Аналогично, если результат операции оказывается меньше нижней границы допустимого диапазона, то в выходной операнд записывается минимальное возможное значение.

В арифметике с насыщением ММХ-команды сложения, вычитания и упаковки данных могут обрабатывать числа со знаком или без знака. Данные со знаком и без знака имеют различный допустимый диапазон. Следовательно, если используется арифметика с насыщением, то при выходе результата операции за пределы допустимого диапазона в выходной операнд записываются различные значения, в зависимости от типа данных.