|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||||||
Обращение к переменным объекта с использованием указателя this из inline assembler21.09.2009, 22:15. Показов 7716. Ответов 74
Метки нет (Все метки)
Мне нужно написать класс на С++ с учетом возможности ввода количества столбцов и строк матрицы. Матрица должна размещаться в динамической памяти. Переменные указателя на матрицу и размеров матрицы должны быть нестатическими членами класса. Обращение к переменным должно осуществляться с использованием указателя this без использования оператора разыменования указателя (->). Вся выделяемая память в программе должна быть освобождена перед выходом.
Я сделал так, но пишет ошибки:
Добавлено через 38 минут Вот так получилось. А как массив задать?
0
|
|||||||||||
| 21.09.2009, 22:15 | |
|
Ответы с готовыми решениями:
74
GCC Inline Assembly перевести в Visual Studio Inline Assembler inline assembler в СИ Преобразование кода без указателя в код с использованием указателя |
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||||||||||||
| 24.09.2009, 03:10 [ТС] | ||||||||||||||||
|
Вот реализация задания(приведу полный листинг, если кто найдет как подправить, то подправьте)
Не по теме: XuTPbIu_MuHTAu, не мог бы удалить предыдущее моё сообщение? Оно в этой теме не пригодится все равно. Добавлено через 40 минут Вот небольшие поправки. 1) Я зделал, чтобі рандом генерировал как положительніе значения, так и отрицательніе 2) Обнаружено, что ф-я
0
|
||||||||||||||||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||
| 25.09.2009, 17:03 [ТС] | ||||||
|
как можно вызвать метод Calculate из inline assembler?
Пробую так, но он вілетае.
0
|
||||||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 25.09.2009, 17:48 | |
|
galileopro, эта функция неявно принимает один параметр - указатель на класс. сделай push &t (мб это делается как lea eax,t push eax), затем сделай call pMethod. И зачем там ret ? он не имеет отношения к вызову
Добавлено через 1 минуту И я был занят вчера,так что упустил нить.У тебя Calculate заработала в конечном итоге?
1
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||||||
| 25.09.2009, 17:58 [ТС] | |||||||||||
|
Да. Щас я віложу код. Но я пока не могу візвать єту Calculate из ассемблерной вставки, а надо именно так.
Добавлено через 1 минуту
Вот я заметил, что такой код помещает в регистр eax указатель this.
0
|
|||||||||||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 25.09.2009, 18:09 | |
|
указатель this нужно запихнуть на вершину стека перед вызовом
1
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||||||||||||
| 25.09.2009, 18:30 [ТС] | ||||||||||||||||
Может как-то
0
|
||||||||||||||||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
||
| 25.09.2009, 18:39 | ||
|
MSDN говорит :
1
|
||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
| 25.09.2009, 18:43 [ТС] | |
|
Это можно сделать. Иначе лабу бы такую не дали. Процедура вызвалась без глюков. Я её трассировал, она прекрасно вызвалась. Но после этого изменился this на 0000....07 и в mov ebx, this ebx поместилось 7. Может можно как-то єтого избежать?
0
|
|
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
||||||
| 25.09.2009, 18:55 | ||||||
|
galileopro, конечно,можно
нужно посмотреть на пролог функции Calculate и понять,что она воспринимает как this.Скорее всего регистр какойнить.Добавлено через 4 минуты У меня передается через ecx Добавлено через 1 минуту т.е такой код
Но нужно понимать,что это не поддерживаемое, зависящее от компилятора, решение.Может,этого хватит для сдачи задания,но не могу не предупредить,что чем реже такие фокусы используются,тем лучше.
1
|
||||||
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||
| 25.09.2009, 18:58 [ТС] | ||||||
|
Я знаю. Я посмотрел этот регистр, но так вызывать нельзя мне поставят "2". Препод сказал так: нужно передать call адрес вызываемой ф-и, помещенной в this, однако перед єтим нужно позаботится, чтобы this - не изменилось. Я пробовал делать puch - pop Но оно восстанавливает не то значение. Вот посмотри как я хочу сделать
0
|
||||||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 25.09.2009, 20:02 | |
|
что значит "помещенной в this"и "this" не изменилось? Ладно,пофиг
Короче,pop там не поможет. Поскольку после вызова поверх в стек пихается как минимум EBP и адрес возврата. В дебаге еще что-то. Однако можно точно сказать,что если ты перед вызовом запушиш указатель на объект, то в функции он будет в стеке сразу "под" адресом возврата. Это можно посчитать.Но реализация будет отличаться для дебага и релиза,т.к по-разному проходит пролог функции.После вызова нужно не забыть сделать pop. Добавлено через 15 секунд что значит "помещенной в this"и "this" не изменилось? Ладно,пофиг Короче,pop там не поможет. Поскольку после вызова поверх в стек пихается как минимум EBP и адрес возврата. В дебаге еще что-то. Однако можно точно сказать,что если ты перед вызовом запушиш указатель на объект, то в функции он будет в стеке сразу "под" адресом возврата. Это можно посчитать.Но реализация будет отличаться для дебага и релиза,т.к по-разному проходит пролог функции.После вызова нужно не забыть сделать pop.
1
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||
| 25.09.2009, 20:07 [ТС] | ||
|
Вот в методичке сказано такое
0
|
||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 25.09.2009, 20:09 | |
|
galileopro, ret вызывается функцией.
1
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||
| 25.09.2009, 20:13 [ТС] | ||
|
Ладно. Спасибо. Я еще почитаю, может чё найду. А вот еще надо такое
0
|
||
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 25.09.2009, 20:26 | |
|
galileopro, у тебя параметров вроде нет. Посмотри внимательно на пролог функции и разберись,что там творится с EBP и ESP
Попробуй сам,я в свое время справился)То,что я писал - делать push перед вызовом,и есть передать в качестве параметра.
0
|
|
| 25.09.2009, 20:26 | |
|
Inline assembler mingw Inline Assembler & C++ написать программу движущийся графический объект с двумя способоми с использованием статического объекта и с использованием динамического объекта inline assembler VS чтение по указателю Как исправить код? / Inline assembler Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|