Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
89
Добавлен:
03.06.2014
Размер:
1.76 Mб
Скачать

10. Расширение amd 3dNow!

В процессорах AMD, начиная сAMD3D, появилось расширение ММХ-команд для обработки как целых, так и пары упакованных 32-битных вещественных чисел:

- дополнительный тип данных: – упакованные 32-битные вещественные числа;

- дополнительный набор команд над этими данными (начинаются с PF: P – это MMX, а F –- float);

- дополнительный набор команд над обычными ММХ-типами данных (упакованными целыми числами).

Дополнительный набор команд расширения AMD 3DNow! включает:

- команды преобразования упакованных целых чисел в упакованные вещественные и обратно;.

- команды сложения, вычитания, сравнения и умножения упакованных вещественных чисел;

- команды вычисления среднего арифметического для упакованных 8-битных целых чисел без знака;

- команды деления и вычисления квадратного корня по итерационным формулам;

- некоторые другие команды.

11. Команды потокового расширения SSE, SSE2

Команды потокового расширения SSE(StreamingSIMDExtension) появились в процессорах фирмыIntel, начиная сPentiumIII, для дополнения набора групповых операций над упакованными целыми числами и выполнения групповых операций над упакованными 32-битными вещественными числами:

- обработка групп целых чисел, упакованных в 64- и 128-битные слова;

- обработка одной пары вещественных чисел одинарной (32 бит) или двойной (64 бита) точности;

- обработка 4 пар вещественных чисел одинарной или 2 пар – двойной точности.

Команды реализуются на дополнительном блоке XMMиз восьми 128-битных регистров, названных ХММ0-ХММ7. При выполненииSSE– команд традиционное оборудованиеFPUне используется, что позволяет эффективно смешивать их с командамиFPU. Дальнейшее развитие технологииSSEв процессорахPentium4 вылилось в набор командSSE2, включающих 271 команду, для выполнения различных арифметических и логических операций с обработкой за 1 такт до 4 32-битных чисел с плавающей запятой, упакованных в 128-битное слово.

2. Краткое введение в программирование на языке Ассемблера

Ассемблер – машинно-ориентированный язык, предназначенный для написания программ, наиболее эффективных по времени и потреблению ресурсов, или обеспечивающих расширенные функциональные возможности по использованию ресурсов, недоступные из языков высокого уровня. Обычно он используется для написания относительно коротких программ или фрагментов кода, включаемых в программы на языках высокого уровня.

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

  • символическое наименование операций и операндов;

  • отсутствие привязки к конкретным адресам памяти;

  • возможность специализации программ с помощью макросредств.

Процесс подготовки, трансляции и выполнения ассемблерной программы можно пояснить с помощью схемы,

приведенной на рис. П2.1.

Рис. П2.1

Дальнейшее изложение ориентировано на использование ассемблеров Intel80X86 –MASMиTASM.

Формат оператора ассемблера

В ассемблере различают два вида форматов:

  1. формат исполняемого оператора имеет вид

[метка:] операция операнд(ы)] [ ; комментарий]

  1. формат директивы имеет вид

[имя] директива [аргумент(ы)] [ ; комментарий]

Указанные поля форматов имеют следующий смысл:

- метка/имя символически задает адрес данной команды в исполняемом файле /адрес директивы в исходном тексте;

- операция символически задает дейстие, выполняемое над операндами при выполнении программы;

- директива символически задает действие, выполняемое над аргументами при трансляции программы и генерации объектного файла.

- операнды – имена, числа, символы, участвующие в операции (может быть 0/1/2 операнда);

- аргументы – имена, числа, символы, используемые в директиве (число аргументов не ограничено);

- комментарий – пояснение к тексту программы, при трансляции не рассматривается.

Директива (иногда называется псевдокоманда) ассемблера выполняется на этапе трансляции исходного текста программы в объектный файл, исполняемых машинных команд не порождает.

Исполняемый оператор в процессе трансляции исходного текста порождает машинные команды, которые выполняются на этапе выполнения программы.

Директивы ассемблера