|
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
|
||||||
inline assembler VS чтение по указателю21.05.2012, 01:42. Показов 3958. Ответов 23
Метки нет (Все метки)
Доброе время суток.
Задача состоит в чтении 1 байта по адресу указателя. Проблема с пониманием, что не так с типами операндов.
0
|
||||||
| 21.05.2012, 01:42 | |
|
Ответы с готовыми решениями:
23
GCC Inline Assembly перевести в Visual Studio Inline Assembler inline assembler в СИ Inline assembler mingw |
|
|
|
| 21.05.2012, 09:30 | |
|
Я intel'овскую систему команд не знаю, но подозреваю, что операция mov делает пересылку одного слова (4 байт), а тебе при чтении из указателя нужно пересылать только 1 байт. Поэтому второй "mov" надо заменить на однобайтный. Наверное он "movb" называется
Ну и так, на всякий случай. У mov'а источник и приёмник точно в таком порядке пишутся?
0
|
|
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
||||||
| 21.05.2012, 19:10 | ||||||
0
|
||||||
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
| 21.05.2012, 19:44 | |
|
Процессоры семейства х86 позволяют использовать в командах только один косвенный аргумент. Т.е. из памяти в память MOV нельзя.
1
|
|
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
| 21.05.2012, 20:52 | |
|
Конечно! Он и НЕ во вставке трактуется как память.
0
|
|
|
|
||
| 21.05.2012, 21:30 | ||
|
0
|
||
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
||||||
| 21.05.2012, 22:02 | ||||||
|
Я дизассемблировал функцию readFromPointer в VS 2008. Забавно, что в таком варианте
0
|
||||||
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
| 22.05.2012, 19:51 | |
|
Гарантии тут: x86 calling conventions
0
|
|
|
|
||
| 22.05.2012, 20:33 | ||
|
0
|
||
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
||
| 22.05.2012, 20:50 | ||
|
0
|
||
|
|
|||
| 22.05.2012, 21:09 | |||
|
1
|
|||
|
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
|
|
| 24.05.2012, 19:11 [ТС] | |
|
Всем спасибо за помощь, однако в процессе раздумий задача изменилась и теперь необходимо считать не побайтно, а блок определенной длины. Причем, чтобы длину блока можно было выставлять достаточно большой (1-10 МБ). С похожими командами в ассемблере не сталкивался. Кто что может подсказать?
И еще вопрос, возможно ли, что запись или чтение в RAM выполнятся некорректно, т.е. запишется/считается не то, что на самом деле существует в памяти или не то, что должно писаться в память?
0
|
|
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
| 24.05.2012, 21:39 | |
|
Непонятно... Напиши на C что ты хочешь сделать, а мы переведём на ассемблер.
1
|
|
|
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
|
||||||
| 24.05.2012, 21:45 [ТС] | ||||||
|
Нашел инструкции MOVSx - movsb, movsw, movsd.
Но почему-то программа падает не дойдя даже до половины элементов, проверял на значениях записываемых в ecx (при всех прочих равных условиях) 1000 еще работает, а 100000 уже нет, при всей выделяемой памяти в 1 МБ. В описании этих функций присутствует момент, что в счетчик CX нужно записывать значение элементов (байт, слов, двойных слов), но в данном случае кол-во элементов и байт совпадает ведь.
0
|
||||||
|
|
|
| 24.05.2012, 22:00 | |
|
В VirtualAlloc делает реальное выделение памяти? Я почитал описание, толком ни х не понял, но такое ощущение, что она просто резервирует адреса. Если выделать память через malloc, то что-нибудь изменится?
0
|
|
|
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
|
|
| 24.05.2012, 22:26 [ТС] | |
|
http://msdn.microsoft.com/en-u... 85%29.aspx
The malloc function has the disadvantage of being run-time dependent. The new operator has the disadvantage of being compiler dependent and language dependent.
0
|
|
|
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
|
|
| 24.05.2012, 23:13 [ТС] | |
|
Также не работает, падает на movsb.
0
|
|
| 24.05.2012, 23:13 | |
|
Помогаю со студенческими работами здесь
20
Inline Assembler & C++ Как исправить код? / Inline assembler Компиляция Inline assembler (вставки ассемблера) Обращение к переменным объекта с использованием указателя this из inline assembler Работа со строками. Удалить из строки символы в скобках inline assembler. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|