Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5

Возможна ли косвенная адресация для обмена с ymm регистрами?

24.02.2020, 14:46. Показов 2650. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени!

Правильно ли я понимаю что для инструкций movaps и аналогичным им нельзя использовать в качестве указателя адреса регистр? то есть получается адреса загрузки и выгрузки данных "намертво зашиваются" еще на стадии трансляции и единственный способ сделать их динамическими это динамически менять код самих инструкций то таким образом чтобы часть инструкции указывающие на смещение принимала нужное мне динамическое значение?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2020, 14:46
Ответы с готовыми решениями:

Косвенная адресация
Как тут сделать обращение к элементам массива через косвенную адресацию?#include <iostream> /* run this program using the...

Косвенная адресация
здравствуйте, друзья! вопрос такой, есть таблица из 2ух столбцов: А - код товара, В - стоимость. указывая в ячейке Е1 код товара,...

косвенная адресация
В ESI находится адрес начала строки mov start_adr, BYTE PTR ESI; почему на эту строку компилятор ругается? пишет что неверное...

16
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
24.02.2020, 15:16
можно, почему нет .
0
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
24.02.2020, 15:36  [ТС]
значит я ошибаюсь в написания
вы могли бы написать пример как правильно (одну строку).

Добавлено через 6 минут
тема закрыта.

Добавлено через 11 минут
сам не могу понять что же я такое неправильно набирал что оно не работал
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8663 / 4498 / 1670
Регистрация: 01.02.2015
Сообщений: 13,912
Записей в блоге: 12
24.02.2020, 18:10
Лучший ответ Сообщение было отмечено K_ILYA_V как решение

Решение

K_ILYA_V, первоисточником для ответов на вопросы по инструкциям является 2-й том Intel.
https://software.intel.com/sit... -2abcd.pdf

Здесь чуть больше ссылок
✅ Полезные ссылки, книги, инструменты

Раз вы глубоко интересуетесь этой темой, всё равно найдёте эту книгу.
Позже найдёте соответствующие интринсики в C, которые превращаются в инструкции SIMD.
1
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
24.02.2020, 18:22  [ТС]
интерес у меня настоящий, а знание английского языка фальшивое. я учу но на данный момент продвинулся от имбецила до дебила.

Добавлено через 7 минут
я в курсе о существовании "оберток" для векторных инструкций в с++, я пробовал их использовать., они все равно не дают такого контроля и скорости как непосредственные команды
0
4192 / 1839 / 222
Регистрация: 06.10.2010
Сообщений: 4,125
28.02.2020, 17:53
Посмотри на инструкции типа VGATHERDPD - там вообще для адресации используются ymm-регистры.
1
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,305
Записей в блоге: 12
28.02.2020, 18:37
murderer, зачем так человека пугать?

K_ILYA_V, вот тут по-русски: https://www.club155.ru/programming
Примеры аналогичные обычному mov:
Assembler
1
2
3
4
mov edx,[eax+ecx*8]
movaps xmm0,[eax+ecx*8]
vmovaps ymm0,[eax+ecx*8]
vmovaps zmm0,[eax+ecx*8]
Обращаю внимание, что ymm / zmm - регистры AVX / AVX-512, поэтому и инструкции должны быть с префиксом v. В то же время vmovaps может принимать регистры xmm, а вот movaps принимать ymm / zmm не может.
1
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
28.02.2020, 18:42  [ТС]
Цитата Сообщение от murderer Посмотреть сообщение
Посмотри на инструкции типа VGATHERDPD - там вообще для адресации используются ymm-регистры.
я сейчас как раз пишу алгоритм комбинатора на ее основе.

Добавлено через 2 минуты
Цитата Сообщение от Jin X Посмотреть сообщение
murderer, зачем так человека пугать?

K_ILYA_V, вот тут по-русски: https://www.club155.ru/programming
Примеры аналогичные обычному mov:
Assembler
1
2
3
4
mov edx,[eax+ecx*8]
movaps xmm0,[eax+ecx*8]
vmovaps ymm0,[eax+ecx*8]
vmovaps zmm0,[eax+ecx*8]
Обращаю внимание, что ymm / zmm - регистры AVX / AVX-512, поэтому и инструкции должны быть с префиксом v. В то же время vmovaps может принимать регистры xmm, а вот movaps принимать ymm / zmm не может.
спасибо, но zmm мне недоступны. могли бы вы пояснить мне регистры масок приведя пример команды.
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,305
Записей в блоге: 12
28.02.2020, 19:13
Цитата Сообщение от K_ILYA_V Посмотреть сообщение
пасибо, но zmm мне недоступны. могли бы вы пояснить мне регистры масок приведя пример команды.
Зачем вам маски, если наборы AVX-512 (zmm) вам недоступны?

fasm:
Assembler
1
2
3
4
5
mov al,10101010b
kmovb k1,eax
vmovapd zmm0{k1}{z},zword [x]
. . .
x dq 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0
Записывает в zmm0 в нечетные позиции (если считать с 0) числа double, располагающиеся по адресу [edx], чётные позиции обнуляет.
Т.е. в результате zmm0 будет хранить числа 0.0, 20.0, 0.0, 40.0, 0.0, 60.0, 0.0, 80.0 (если смотреть позиции от младших к старшим).

Добавлено через 1 минуту
Аналогичное можно проделать и с ymm, но это всё равно AVX-512.
1
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
28.02.2020, 19:18  [ТС]
то есть "регистры К" это не некие виртуальны конструкции включаемые в код команды а вполне реальные регистры которые нужно предварительно загружать данными?

мне казалось они доступны и для ymm регистров.

а вот такой детский вопрос:
Assembler
1
2
3
4
5
6
facekey128 struct
    dw 10 dup (?)                             
facekey128 ends
 
.data
    Icshdlinekey facekey128 __________________________
как инициализировать?
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,305
Записей в блоге: 12
28.02.2020, 19:39
Цитата Сообщение от K_ILYA_V Посмотреть сообщение
то есть "регистры К" это не некие виртуальны конструкции включаемые в код команды а вполне реальные регистры которые нужно предварительно загружать данными?
Да, вполне реальные регистры.
Этих вполне реальных регистров куча, где-то на форуме даже тема была об этом.
Вот, нашёл: Что означают первые и последние символы в названиях регистров (eax, ebx и др.)

Цитата Сообщение от K_ILYA_V Посмотреть сообщение
мне казалось они доступны и для ymm регистров.
Они доступны, но без AVX-512 вы их использовать не сможете.
Т.е. вы сможете их ассемблировать, но исполнить не получится. Как не сможете исполнить vmovaps ymm0,[eax] без AVX или какой-нибудь bextr eax,ecx,edx без BMI-расширения.

Цитата Сообщение от K_ILYA_V Посмотреть сообщение
как инициализировать?
Icshdlinekey facekey128 <> или Icshdlinekey facekey128 <<0,1,2,3,4,5,6,7,8,9>>
1
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
28.02.2020, 19:49  [ТС]
оки-доки.
я часто пользуюсь подсказка а там не всегда можно легко понять относиться инструкция к V2 или V5, как следствие возникли трудности.

я думаю на сегодня у меня все.
надеюсь ближе к концу выходных выложить подвижки моего кода который всегда открыт к критике. заходите читайте.
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,305
Записей в блоге: 12
28.02.2020, 20:50
Вот вам ещё пара подсказок:
https://www.nasm.us/doc/nasmdocb.html
https://en.wikipedia.org/wiki/... n_listings
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8663 / 4498 / 1670
Регистрация: 01.02.2015
Сообщений: 13,912
Записей в блоге: 12
28.02.2020, 22:18
У Intel есть программа, эмулирующая недостающие инструкции SIMD в программе пользователя.
https://software.intel.com/en-... t-emulator
можно попробовать AVX-512

Это предназначено для изучения инструкций, т.к. они просто медленно эмулируются.
1
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
28.02.2020, 22:34  [ТС]
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
У Intel есть программа, эмулирующая недостающие инструкции SIMD в программе пользователя.
https://software.intel.com/en-... t-emulator
можно попробовать AVX-512

Это предназначено для изучения инструкций, т.к. они просто медленно эмулируются.
возможно но не сейчас.
сейчас я наоборот предполагаю обратный процесс. если мне удастся довести свой проект до какой либо рабочей стадии то я буду рассматривать вопрос дополнения его версиями для SEE4 чтобы тем самым добиться большего охвата аудитории. проектирование на avx я выбрал потому что хочу с ним ознакомиться и это наиболее "простой" способ по причине наличия большого количества инструкций значительно все упрощающих.
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,305
Записей в блоге: 12
29.02.2020, 10:24
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
можно попробовать AVX-512
Хорошая программа, сам иногда пользуюсь.
Единственная проблема: не всё удаётся отлаживать.
Тот же AVX-512 исполнить под отладчиком не удастся

Добавлено через 15 минут
Цитата Сообщение от K_ILYA_V Посмотреть сообщение
avx я выбрал потому что хочу с ним ознакомиться и это наиболее "простой" способ по причине наличия большого количества инструкций значительно все упрощающих.
Кстати говоря, на ранних моделях (поколениях) Intel Core (до Skylake) при использовании AVX программа может работать медленнее, чем при SSE, как это ни парадоксально. Это происходит из-за сброса тактовой частоты при работе с AVX. Вот тут есть объяснение этому странному явлению:
https://habr.com/ru/post/342272/
https://stackoverflow.com/ques... -frequency (и там же есть ссылка на статью в первом сообщении)
Но конечно же, AVX удобнее хотя бы с той точки зрения, что позволяет задавать отдельно регистр для получения результата той или иной операции (к примеру, даже при работе с xmm: vaddps xmm0,xmm1,xmm2, а не addps xmm0,xmm1).
Также хочу предостеречь от перемешивания SSE и AVX инструкций (с v и без v), ибо при этом происходит большая задержка (latency).
1
E=m*c^2
 Аватар для K_ILYA_V
160 / 47 / 10
Регистрация: 04.02.2019
Сообщений: 263
Записей в блоге: 5
29.02.2020, 11:53  [ТС]
Цитата Сообщение от Jin X Посмотреть сообщение
Зачем вам маски, если наборы AVX-512 (zmm) вам недоступны?

fasm:
Assembler
1
2
3
4
5
mov al,10101010b
kmovb k1,eax
vmovapd zmm0{k1}{z},zword [x]
. . .
x dq 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0
Записывает в zmm0 в нечетные позиции (если считать с 0) числа double, располагающиеся по адресу [edx], чётные позиции обнуляет.
Т.е. в результате zmm0 будет хранить числа 0.0, 20.0, 0.0, 40.0, 0.0, 60.0, 0.0, 80.0 (если смотреть позиции от младших к старшим).

Добавлено через 1 минуту
Аналогичное можно проделать и с ymm, но это всё равно AVX-512.
предполагаю что сами разработчики больше ориентируются на следующий путь

сравнение ymm c ymm
перенос знаковых битов после сравнения из ymm в к-регистр
дальнейшие действие при помощи маски в к-регистре

Добавлено через 57 минут
именно с такой проблемой я уже столкнулся и чтобы ее преодолеет пришлось написать механизм "догрузки" в ymm регистры, если бы мне была доступна маска то все было бы гораздо проще.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.02.2020, 11:53
Помогаю со студенческими работами здесь

Косвенная адресация
Составьте программу, которая пересылает содержимое регистра Dx в память. используйте косвенную адресацию с регистром Si. (TASM)

Косвенная адресация объектов
Здравствуйте есть необходимость собрать адреса созданных объектов в массив количество их известно . ну к примеру 5 штук. QObject ** Obj...

Косвенная адресация в T-SQL
Опять я со своими проблемами… На этот раз у меня не база данных, а скорее БАНК данных, т.е. структура не соответствует правилам...

Косвенная адресация процедур в VBA
Привет профессионалам, может не совсем обычные вопросы... 1.Можно ли релизовать это в VBA ссылки на процедуры записывать в массив и потом...

Указатели. Матрица и двойная косвенная адресация
При метке 4, косяк..не могу понять..что-то с указателем? Помогите пожалуйста.. #include&lt;stdio.h&gt; #include&lt;locale.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru