IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Обьектно-орентированность, в GMODE
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 69
Пол: Мужской
Реальное имя: Вася Пупкин

Репутация: -  1  +


Допустим нарисовал я кнопку. И еще, еще...
А как сделать эту обьектно-орентированность (блин, слово то какое) не пойму! sad.gif

Может кто обьяснит?


--------------------
Стабильность - признак мастерства
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Давай-ка лучше заново и по-подробнее. Я что-то не особо въехал. Ты спрашиваешь, как использовать процедуру написанную на ASM в паскале? {$L ...) и понеслось. Это ты должен знать. Если наоборот, то EXTERN ...:PROC и поехали.
А если тебе надо из ассемблерного кода поработать с паскалевскими объектами, то это уже другое дело. Рекомендую так: создаёшь класс TObject такого типа:
Type
 TObject=Object
   Constructor Create;
   Procedure Free;
   Destructor Destroy;Virtual;
 End;

Constructor TObject.Create;
Begin
End;

Destructor TObject.Destroy;
Begin
End;

Procedure TObject.Free;
Begin
 Dispose(this,Destroy)
End;

После этого надо заюыть про то, что Dispose сожно вызывать и самому, а пользоваться только Free. А САМОЕ важное - ВСЕ классы должны наследоваться от такого вот TObject. Чего мы этим добились? Мы знаем где находится адрес VMT в объектах и можем их спокойно создавать, кастовать и убивать:).
Чтобы создать объект:
{Creating static object}
PUSH @DATA
PUSH OFFSET InstanceOfMyObject
CALL TSomeObject.Create
{Creating dinamic object}
XOR AX,AX
PUSH AX
PUSH AX
CALL TSomeObject.Create

Что примечательно, последний вариант сам вызовет new и т. д., а так же вернёт тебе поинтёр на инстанс.
Чтобы вызвать какой-то динамический метод:
MOV BX,[WORD PTR InstanceOfMyObject] {Get Offset Of VMT}
MOV AX,@DATA {Segment, where VMT Are Located}
MOV ES,AX
CALL [FAR PTR ES:(BX + 4*MethodNumber)]

Надо заметить, что Method #0 - Destructor.
Чтобы кильнуть:
PUSH SEG MyObj
PUSH OFFSET MyObj
CALL TObject.Free

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

Вот только я в душе не знаю во что превращаются имена статических методов объектов при компиляции, а так же имена конструкторов... sad.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
gMan   Обьектно-орентированность   22.07.2004 20:39
BlackShadow   :) Например создаёшь объект типа Type  TButton  …   22.07.2004 20:53
gMan   Хм... На паскале то понятно. А с ассемблером как б…   23.07.2004 2:01
BlackShadow   Ну ты загнул. Было у меня дело - писал на асме с О…   23.07.2004 15:48
gMan   Отлично! жду! Заранее спасибо.   23.07.2004 16:56
gMan   Уже ведь вторник, а обещанного нет. :p2:   27.07.2004 2:02
BlackShadow   Я уже извинился в другом топике - запамятовал (вых…   27.07.2004 17:03
gMan   Ждемс... :)   27.07.2004 17:15
BlackShadow   Ндя. Особо порадовать нечем. Оказывается поприбива…   28.07.2004 16:12
gMan   Спасибо, ты мне очень помог. :rolleyes:   28.07.2004 21:36
BlackShadow   Не на чем. Если напишешь чего рабочего, выложи, PL…   29.07.2004 17:05
gMan   Нет проблем, как напишу - так покажу :) P.S. Есл…   29.07.2004 18:06
gMan   BlackShadow, что если я напишу модуль компонентов …   31.07.2004 15:41
BlackShadow   Давай-ка лучше заново и по-подробнее. Я что-то не …   1.08.2004 17:02
gMan   Спасибо, далее сам догоню :) Уже что то назревае…   1.08.2004 21:17
BlackShadow   А зачем тебе понадобился паскаль? Лень графику дел…   1.08.2004 21:20
gMan   Нет просто удобнее работать :) Так все таки лучш…   1.08.2004 21:36
BlackShadow   Да хоть на басике пиши :) Чем паскаль удобнее асма…   1.08.2004 23:01
gMan   Бррр... Короче на чистом асме писать буду и точка…   2.08.2004 21:32
BlackShadow   1). А что ты подразумеваешь под компонентом? 2). К…   3.08.2004 16:49
gMan   Ладно, разберусь как нибудь. Тема закрыта :)   4.08.2004 1:24


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 7:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name