Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Арифметические команды.






Группа арифметических команд включает команды сложения, вычитания, умножения, деления, извлечения квадратного корня, вычисления максимального и минимального значения, вычисление обратных значений, а также команды сравнения.

При выполнении параллельных операций (мнемокоды с суффиксом 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).






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.