Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 1 по 294.doc
Скачиваний:
13
Добавлен:
16.04.2019
Размер:
6.2 Mб
Скачать

2.6.6. Команды преобразования формата чисел

Команды этой группы производят преобразование операндов iai формата с точкой одинарной точности (ОТ) в 32-разрядные целые числа (двойное слово) и обратно (табл. 2.55). Мнемокоды команд начинаются буквами CVT, а в качестве суффикса дается символическое обозначение преобразования, которое выполняет команда.

PI2PS - два двойных целых числа со знаком в два числа ОТ;

SI2SS - одно двойное целое число со знаком в одно число ОТ;

PS2PI—два числа ОТ в два двойных целых числа со знаком;

SS2SI - одно число ОТ в одно двойное целое число со знаком.

Таблица 2.55

Команды CVTPI2PS, CVTSI2SS выполняют преобразование 32-разрядных целых чисел в формат чисел с плавающей точкой ОТ. Команда CVTPI2PS преобразует два двойных слова со знаком D1, DO, хранящихся в ММХ-регистре mm или ячейке памяти mm64, в два числа ОТ, которые записываются в качестве младших элементов F1, FO в SSE-регистр mmx. Два стар­ших элемента F3, F2 в SSE-регистре при этом не изменяются. Команда CVTSI2SS преобра­зует одно двойное слово со знаком DO, которое содержится в регистре общего назначения г (регистры с именами ЕАХ,..., EDI) или ячейке памяти т32, в одно число одинарной точности. Это число заносится в качестве младшего элемента FO в SSE-регистр mmx. Три старших элемента F3-F1, хранящихся в этом регистре, не изменяются. При выполнении данных ко­манд в случае необходимости осуществляется округление результата в соответствии со зна­чением поля RC в регистре MXCSR.

Команды CVTPS2PI и CVTTPS2PI осуществляют преобразование двух чисел ОТ, явля­ющихся младшими элементами F1, FO в SSE-регистре mmx или хранящихся в ячейке памя­ти т64, в два целых двойных слова со знаком D1, DO, которые записываются в ММХ-регистр mm. Команда CVTPS2PI выполняет округление в соответствии со значением поля RC регистре MXCSR, а команда CVTTPS2PI отбрасывает дробную часть. Если результат преобразования не может уместиться в двойное слово со знаком, то в качестве соответ­ствующего элемента результата заносится число 80000000h.

Команды CVTSS2SI и CVTTSS2SI преобразуют одно число ОТ, хранящееся в SSE-регис­тре mm или ячейке памяти т32, в двойное слово со знаком, которое поступает в регистр общего назначения г. Команда CVTSS2SI выполняет округление, как это задается значением поля RC в регистре MXCSR, а команда CVTTSS2SI отбрасывает дробную часть. Если ре­зультат не может уместиться в двойное слово со знаком, то в регистре г устанавливается значение 80000000h.

Если элементом исходного операнда является не-число (SNaN или QnaN), то выполне­ние команд CVTPS2PI, CVTSS2SI, CVTTPS2PI, CVTTSS2SI вызывает исключение типа #1. Если при этом установлено значение бита маски IM = 1 (исключение маскировано), то ре­зультатом операции будет целое число SOOOOOOOh.

Все команды данной группы реализуют исключение типа #Р, если преобразование не может быть выполнено точно.