|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||||||
Обращение к переменным объекта с использованием указателя this из inline assembler21.09.2009, 22:15. Показов 7754. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|