4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38

inline assembler VS чтение по указателю

21.05.2012, 01:42. Показов 4144. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток.
Задача состоит в чтении 1 байта по адресу указателя. Проблема с пониманием, что не так с типами операндов.
C++
1
2
3
4
5
6
7
char readFromPointer(char* pointer)
{
    char result; 
    __asm mov edi, pointer
    __asm mov result, [edi]
    return result;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2012, 01:42
Ответы с готовыми решениями:

GCC Inline Assembly перевести в Visual Studio Inline Assembler
Здравствуйте. Есть код на GCC Inline Assembly и его нужно перевести в Visual Studio Inline Assembler. Не работал с GCC Inline Assembly...

inline assembler в СИ
Доброго! каким образом можно связать внешную переменную и встроенный ассмблер в Си? чтоб было примерно так: int abc = 666; ...

Inline assembler mingw
Добрый вечер ув. пользователи форума. Возникла проблема с ассемблером, и его реализацией в mingw. Имеется функция void call_hook ( void...

23
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
24.05.2012, 23:46
Студворк — интернет-сервис помощи студентам
А текущее значение адреса какое? Такое подозрение, что падает на границе страницы
0
Хочу в Исландию
 Аватар для skaa
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
25.05.2012, 01:41
Вот что должно быть в ассемблере:
Assembler
1
2
3
4
  mov   esi,pointer
  mov   edi,pointer2
  mov   ecx,[block_size]
  rep   movsb
, проверено в Borland C++ Builder 5.0.
1
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
26.05.2012, 01:49  [ТС]
Спасибо, все круто, все работает.
Но даже movsd не может полностью забить кэш, скорость перемещения такого ~750 МБ/c, т.е. работает кэш, а не память. Поэтому нужно какой-то вариант с бОльшим блоком для перемещения.

Добавлено через 8 часов 50 минут
На stackoverflow посоветовали использовать "movntdq for writing and movntdqa for reading".
Эти инструкции идут в обход иерархии кэшей.

http://www.damtp.cam.ac.uk/cos... /vc194.htm

"Moves the double quadword in the source operand (second operand) to the destination operand (first operand) using a non-temporal hint to minimize cache pollution during the write to memory."

Попробовал понять, как использовать и ничего не получилось.

C++
1
2
3
4
5
6
7
8
9
void* c = (void*)malloc(16);
    double* pointer2 = new double[4];
    pointer2[0] = 0;
    pointer2[1] = 2;
    pointer2[3] = 0;
    pointer2[4] = 4;
    //__asm movntdq xmm0, 0
    __asm movups xmm0, pointer2
    __asm movntdq c, xmm0
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.05.2012, 15:53
Цитата Сообщение от Evg Посмотреть сообщение
Я intel'овскую систему команд не знаю, но подозреваю, что операция mov делает пересылку одного слова (4 байт), а тебе при чтении из указателя нужно пересылать только 1 байт.
mov кидает любой целый размер не больше слова. На x32 не больше 4-х байт, в данном случае 1-й мов 4-х байтный, а второй вроде однобайтный.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2012, 15:53

Inline Assembler & C++
int main(int argc, char *argv) { perevod(); cout<<"Type Esc to Escape \n"; __asm { mov ah,01h ...

Как исправить код? / Inline assembler
#include <stdio.h> int main(int argc, char** argv ) { int aa; int bb; aa = 42; bb = 10;

Компиляция Inline assembler (вставки ассемблера)
Доброго времени суток! Уважаемые кодеры! Помогите с компиляцией С++ со вставками ассемблера. g++ или gcc выдает ошибку: ...

Обращение к переменным объекта с использованием указателя this из inline assembler
Мне нужно написать класс на С++ с учетом возможности ввода количества столбцов и строк матрицы. Матрица должна размещаться в динамической...

Работа со строками. Удалить из строки символы в скобках inline assembler.
Удалить из строки символы в скобках inline assembler. Подскажите в какую сторону копать...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru