Арифметические команды.
Группа арифметических команд включает команды сложения, вычитания, умножения, деления, извлечения квадратного корня, вычисления максимального и минимального значения, вычисление обратных значений, а также команды сравнения.
При выполнении параллельных операций (мнемокоды с суффиксом ps) в качестве входного операнда (операнда-источника) выступают один из ХММ-регистров или 128-разрядная ячейка памяти. Выходным операндом (операндом-приемником) является один из ХММ-регистров.
Скалярные операции (мнемокоды с суффиксом ss) предполагают, что младшие двойные слова операндов должны быть числами с плавающей запятой в КВФ формате. Результат помещается в операнд-приемник, в качестве которого может выступать ХММ-регистр. Входным операндом может быть ХММ-регистр или 32-разрядная ячейка памяти.
Таблица 3.2
Операция | Параллельная | Скалярная |
Сложение | addps | Addss |
Вычитание | subps | Subss |
Умножение | mulps | Mulss |
Деление | divps | Divss |
Извлечение корня | sqrtps | Sqrtss |
Нахождение максимума | maxps | Maxss |
Нахождение минимума | minps | Minss |
Нахождение обратного значения (1/x) | repps | Repss |
Нахождение обратного значения корня | rsqrtps | Rsqrtss |
Мнемокоды арифметических команд представлены в табл. 3.2 и табл. 3.3.
Команды сравнения позволяют определять соответствие операндов указанным условиям и, в зависимости от результата сравнения, устанавливают в нужном элементе операнда-приемника двоичные нули (если условие не выполняется) или двоичные единицы (если условие выполняется). Команды сравнения могут выполняться параллельно над упакованными операндами или скалярно над младшими двойными словами. Все команды имеют два операнда: в качестве входного операнда, или операнда-источника, могут выступать ХММ-регистр или ячейка памяти 128-разрядная для параллельных команд и 32-разрядная для скалярных. Выходным операндом, или операндом-приемником, может быть только один из ХММ-регистров, в котором задействованы либо 128 бит (параллельные команды), либо младшие 32 бита (скалярные команды).
Таблица 3.3
Операция | Параллельная | Скалярная |
Сравнение – условие «равно» | cmpeqps | cmpeqss |
Сравнение – условие «меньше» | cmpltps | cmpltss |
Сравнение – условие «меньше или равно» | cmpleps | cmpless |
Сравнение – условие «неупорядоченности» | cmpunordps | cmpunordss |
Сравнение – условие «не равно» | cmpneqps | cmpneqss |
Сравнение – условие «не меньше» | cmpnltps | cmpnltss |
Сравнение – условие «не меньше или равно» | cmpnleps | cmpnless |
Сравнение – условие «упорядоченности» | cmpordps | cmpordss |
Скалярное сравнение с установкой eflags | - | comiss |
Неупорядоченное сравнение с установкой eflags | - | ucomiss |
Две последние команды в табл 3.3 comiss и ucomiss имеют два операнда и выполняют скалярное сравнение младших 32-разрядных операндов. Особенностью этих команд является то, что содержимое обоих операндов после выполнения операции сравнения остается неизменным, а в регистре флагов EFLAGS процессора определенным образом устанавливаются флаги ZF, PF и CF, а флаги OF, SF и AF сбрасываются в 0. В качестве входных операндов обеих команд могут выступать ХММ-регистры или 32-разрядные переменные в памяти, выходными операндами могут быть только ХММ-регистры. Команды ucomiss и comiss отличаются тем, что генерируют исключительные ситуации для различных форматов не-чисел (NAN).
Логические команды
Все логические команды являются параллельными и позволяют выполнять операции логического И, ИЛИ, И-НЕ, исключающего ИЛИ над отдельными парами битов операндов. Каждая команда имеет два операнда: в качестве входного операнда (источника) могут выступать ХММ-регистр или 128-разрядная ячейка памяти, а в качестве выходного (приемника) - ХММ-регистр. После выполнения команды содержимое операнда-источника не изменяется, а результат помещается в операнд-приемник
Команда andps - параллельная операция логического И над парами битов операнда-источника и операнда-приемника.
Команда andnps - параллельная операция логического И-НЕ над парами битов операнда-источника и операнда- приемника.
Команда orps - параллельная операция логического ИЛИ над парами битов операнда-источника и операнда-приемника.
Команда xorps - параллельная операция логического исключающего ИЛИ над парами битов операнда-источника и операнда-приемника.
Дата добавления: 2018-11-26; просмотров: 689;