Даниэль Куссвюрм - Профессиональное программирование на ассемблере x64 с расширениями AVX, AVX2 и AVX-512
Название: | Профессиональное программирование на ассемблере x64 с расширениями AVX, AVX2 и AVX-512 | |
Автор: | Даниэль Куссвюрм | |
Жанр: | Assembler | |
Изадано в серии: | неизвестно | |
Издательство: | ДМК Пресс | |
Год издания: | 2021 | |
ISBN: | 978-5-97060-928-6 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Профессиональное программирование на ассемблере x64 с расширениями AVX, AVX2 и AVX-512"
В книге рассматривается программирование для 64-разрядной архитектуры x86 и использование расширенного набора векторных команд (AVX). Изучив этот материал, вы сможете кодировать быстродействующие функции и алгоритмы с использованием 64-разрядного языка ассемблера x86 и расширений набора команд AVX, AVX2 и AVX-512. Примеры исходного кода разработаны с использованием Visual Studio C++ и MASM; для их запуска рекомендуется ПК на базе x86 с 64-разрядной ОС Windows 10 и процессором, поддерживающим AVX. Предполагается, что читатели имеют опыт программирования на языках высокого уровня и базовые знания C++. Книга предназначена разработчикам, которые хотят научиться писать код с использованием языка ассемблера x64.
Читаем онлайн "Профессиональное программирование на ассемблере x64 с расширениями AVX, AVX2 и AVX-512". [Страница - 15]
операнды источника и приемника. Однако существует ряд команд, в которых
регистровые операнды либо указаны неявно, либо зависят от команды, как об
суждалось в предыдущем разделе.
Есть три основных типа операндов: непосредственные, регистровые и хра
нимые (запоминаемые). Непосредственный операнд – это постоянное значе
ние, которое кодируется как часть команды. Обычно они используются для
указания постоянных значений. Непосредственное значение можно присво
ить только операнду источника. Регистровые операнды содержатся в регистре
общего назначения или регистре SIMD. Хранимый операнд определяет место
в памяти, где может храниться любой из типов данных, описанных ранее
в этой главе. Хранимым операндом команды может быть либо исходный, либо
целевой операнд, но не оба вместе. Таблица 1.5 содержит несколько примеров
команд, которые используют различные типы операндов.
Таблица 1.5. Примеры основных типов операндов
Тип
Непосредственный
Регистровый
Хранимый
Пример
Аналогичный оператор C/C++
mov rax, 42
rax = 42
imul r12,–47
r12 *= –47
shl r15,8
r15 ≪= 8
xor ecx,80000000h
ecx ^= 0x80000000
sub r9b,14
r9b –= 14
mov rax,rbx
rax = rbx
add rbx,r10
rbx += r10
mul rbx
rdx:rax = rax * rbx
and r8w,0ff00h
r8w &= oxffoo
mov rax, [r13]
rax = *r13
or rcx,[rbx+rsi*8]
rcx |= *(rbx+rsi*8)
sub qword ptr [r8],17
*(long long*)r8 –= 17
shl word ptr [r12],2
*(short*)r12 --">