Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение процедур в файл


maxistent ©   (2006-01-24 14:50:00) 

Приветствую, программеры :-)
Честно говоря вопрос не совсем по Дельфи (желательно бы на ТМТ-паскаль написать)...
Задача: есть какая-то процедура:

Procedure proc1;
var
x:byte
begin
x:=random(255);
writeln(x);
end;


и есть указатель (поиньтер тоись) на неё: P:=@Proc1;

Как эту процедуру (ВСЮ!) из памяти сохранить на диск?
А потом загрузить её из файла и использовать?

Надеюсь, вопрос понятен... Буду ждать ответов...
С уважением, maxistent.


maxistent   (2006-02-03 13:53:00) [1]

Да уж... Ладно, ВСЕМ СПАСИБО за уделённое внимание! Наверное, уже никто ничего "путёвого" не скажет...


Cash   (2006-01-30 13:58:00) [2]

maxistent ©   (30.01.06 11:56) [15]:
ЗЫ: а ведь действительно замудрил! :)))
А про оверлей так и не удосужился вспомнить! :)))


Digitman   (2006-01-30 12:14:00) [3]

http://www.citforum.ru/programming/bp70_lr/lr20.shtml


maxistent   (2006-01-30 12:10:00) [4]


> Digitman ©   (30.01.06 11:30) [13]



> ...но зато позволяют использовать оверлеи


Что-то знакомое... где-то слышал... :-) Объясни, что куда использовать?


Digitman   (2006-01-30 12:04:00) [5]


> maxistent ©   (30.01.06 11:56) [15]


> Можно подробнее?


Поподробнее о чем конкретно ?

Вообще-то здесь форум разработчиков Делфи-приложений, а не ДОС-программ, к каковым Делфи не имеет никакого отношения ...


maxistent   (2006-01-30 11:56:00) [6]


> Digitman ©   (30.01.06 11:30) [13]

Можно подробнее? Очень уж интересТно


> Cash ©   (30.01.06 11:37) [14]


Ну ты тут замудрил!!! "..мелкий, лёгкий интерпритатор... с двуадресными командами... флагов, аккомуляторов..." Можно по-проще и подробнее?

У меня ТМТ-Pascal Lite (ms-dos edition). Не даёт ни в какую!!! Стал бы я тут время тратить ради прикола?


Cash   (2006-01-30 11:37:00) [7]

maxistent ©   (30.01.06 11:17) [12]:
Делать тебе больше нечего! :)))
Напиши мелкий, легкий интерпритатор, который просто работал бы с
двуадресными командами, исполни набор команд, систему флагов и
аккомулятор адресов(можно даже два) со счетчиком команд.
И исполняй все свои процедурки через этот интерпритатор.

А чё TMT-шник дает dll-ки писать??? Неверю!


Digitman   (2006-01-30 11:30:00) [8]


> maxistent ©   (30.01.06 11:17) [12]


Почему бы сразу не сказать, что речь идет именно о ДОС-программах ?

ДОС-программы не знают что такое DLL, но зато позволяют использовать оверлеи.


maxistent   (2006-01-30 11:17:00) [9]


> Digitman ©   (24.01.06 15:12) [4]


У меня как раз та версия ТМТ-шника, которая НЕ ПОЗВОЛЯЕТ использовать DLL. :-(


> Германн ©   (24.01.06 18:35) [9]


TMT-паскаль: 32-битовый компиллер под ДОС. Т.е. тот же Турбо Паскаль, только возможностей больше. Например, поддержка SVGA-режимов, и ещё куча всяких вкусностей, которых нет в Турбо Паскале.


> Leonid Troyanovsky ©   (24.01.06 19:33) [10]


Процедуры пишу я. Но, т.к. ТМТ-паскаль не поддерживает DLL, я пытаюсь создать нечто вроде своей ДЛЛ, т.е. чтобы можно было экспортировать процедуры в какой-то файл, а потом использовать их.

Короче говоря, кто может подсказать, как создать "вручную" свои ДЛЛ и потом использовать их?


Digitman   (2006-01-25 11:00:00) [10]


> VirEx ©   (24.01.06 18:26) [8]


> вообщем запишет в файл


Ну, предположим, запишет .. Проблем здесь нет ..


> сохранить в память


Ну, предположим, прочитает из файла в память .. Тоже не велика проблема ..


> из неё запустит


А вот здесь как раз и ждет засада - код-то, еще раз повторяю, позиционно-зависимый!


Leonid Troyanovsky   (2006-01-24 19:33:00) [11]


> maxistent ©   (24.01.06 14:50)  

> Задача: есть какая-то процедура:


Подробнее, насчет процедуры.
Кто ее пишет, зачем, и на каком основании.

Вообще-то, есть такой язык Forth. Позволяет компилировать налету.
Правда, не всегда в непосредственно исполняемый код (в зависимости
от реализации может требоваться, например, адресный интерпретатор).
Зато есть реализации на паскале для Win32 (groups.google.com go).

--
Regards, LVT.


Германн   (2006-01-24 18:35:00) [12]

Смущает только замечание автора о "ТМТ-паскаль". Не знаю, что это такое, посему молчу.


VirEx   (2006-01-24 18:26:00) [13]

ну и запишет код, по меткам:

asm
db 'lab1';
end;

procedure proc();
begin
...
end;

asm
db 'lab1end';
end;

ну или кто знает как эти метки поставить, я не спец. в таких вещах
вообщем запишет в файл, если надо - сохранить в память и из неё запустит, только это сложновато я думаю будет с памятью работать


Digitman   (2006-01-24 17:08:00) [14]


> TUser ©   (24.01.06 16:48) [6]


> Пиши в файл с адреcа @Proc1 до @Proc2.


И запишет он позиционно-зависимый код.
Что дальше ?


TUser   (2006-01-24 16:48:00) [15]

procedure Proc1;
begin
 // code
end;

procedure ENdOfProc1;
begin
 // empty procedure really afeter Proc1
end;

Пиши в файл с адреcа @Proc1 до @Proc2.


Джо   (2006-01-24 15:16:00) [16]

> maxistent ©

Затея обломается в тот момент, когда поймешь, что в этой процедуре должен содержаться только позиционно-независимый код.


Digitman   (2006-01-24 15:12:00) [17]


> maxistent ©   (24.01.06 15:09) [3]


Чем DLL-то не устраивает ?


maxistent   (2006-01-24 15:09:00) [18]

Если бы для меня это не имело смысла - я бы здесь не торчал со своим вопросом!!! :'( Какие ещё будут мысли по этому поводу? Мне нужно представить это самую процедуру в виде последовательности байт и записать в файл. Потом другой прогой открыть файл, загрузить из него эту процедуру и выполнить её. Это возможно? Если да, то как это реализовать?


Digitman   (2006-01-24 14:59:00) [19]

затея лишенная смысла


Digitman   (2006-01-24 14:55:00) [20]

затея не имеющая смысла


Наверх

Титульная страница Поиск, карта сайта Написать письмо