Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
ВнизКомпоновка кода Делфями Найти похожие ветки
← →
dima_matrix (2003-08-16 12:55) [0]Добрый всем день!
Столкнулся со следующей проблемой, может подскажет кто как с этим бороться. При даже небольших изменениях в проекте (довольно большем) изменяется код программы генерируемый компилятором Делфи для функций, которые никакого отношения к изменениям вообще не имеют. А мне очень важно чтобы данный код генерировался неизменным при модифицировании проекта (если модификации не касаются этих функций, конечно). Буду благодарен всем за любую помощь в данном вопросе.
← →
Skier (2003-08-16 13:18) [1]>dima_matrix © (16.08.03 12:55)
> изменяется код программы генерируемый компилятором Делфи
> для функций, которые никакого отношения к изменениям вообще
> не имеют.
Поясни...
← →
Романов Р.В. (2003-08-16 14:17) [2]Вынеси эти функции в dll или bpl.
← →
dima_matrix (2003-08-16 14:29) [3]Идея интересная вынести во внешний модуль, а если нельзя? Настройками как-то можно допиться такого результата?
2 Skier : код в машинных кодах изменяется для функций при изменении исходников другой функции...
← →
Skier (2003-08-16 14:32) [4]>dima_matrix © (16.08.03 14:29) [3]
Дык...это же вполне естественно. Даже странно...
Такой вопрос : почему вообще у тебя возник этот вопрос ?
что хочеть сделать в конечном итоге ?
← →
Романов Р.В. (2003-08-16 14:36) [5]
> Skier © (16.08.03 14:32) [4]
Наверно защиту
← →
Юрий Зотов (2003-08-16 14:43) [6]> dima_matrix © (16.08.03 14:29) [3]
> код в машинных кодах изменяется для функций при изменении
> исходников другой функции...
Вероятно, изменяется все же не сам код функций, а их адреса?
Что и естественно. Компилятор ведь строит код ВСЕЙ программы разом. И у него нет настроек, которые приказывали бы ему располагать какие-то функции по фиксированным адресам, это уж он сам решает, где какую функцию разместить.
Выносите функции в отдельный модуль и будет Вам счастье. Проще - в BPL.
← →
dima_matrix (2003-08-16 15:23) [7]Да нет, счастья не будет - на адреса-то я есстественно не завязывался, они могут отличаться для одной и той же программы при разных запусках... Господин Романов абсолютно прав по поводу защиты - при этом выносить функции во внешние модули не совсем разумно. Вы не могли бы посоветовать по этому поводу что-нибудь мне неразумному? А по поводу комментариев Skier - почему это есстественно? Я не могу похвастаться супер глубокими познаниями в Делфи, я вообще-то на ВижуалСях пишу, и там компилятор компилирует каждый файл проекта независимо, и если в файле не было изменений (и отключить оптимизацию), то генерировать он должен тот же код. И это кстати по поводу комментария господина Зотова, по-моему копилятор компилит не весь проект сразу - это задача компоновщика. Может быть я не прав, но все равно спасибо за коментарии...
← →
Романов Р.В. (2003-08-16 15:32) [8]А что компилятор действительно генерит другой код функций в которых не было изменений?
← →
Юрий Зотов (2003-08-16 16:38) [9]> dima_matrix © (16.08.03 15:23) [7]
Под словом "компилятор", конечно, имелась в виду кобинация "компилятор + линковщик". Ну да ладно, не в этом суть.
Похоже, Вам нужен перемещаемый код в виде данных с его исполнением в стеке. Это было бы элементарно, если бы не проблема модификации адресов, на которую Вы, видимо и наткнулись. Посмотрите по этому поводу вот что:
http://www.programme.ru/archive/2001/3/032001_3.phtml
И обратите особое внимание на фразу:
"придется передавать стековому коду указатели на вызываемые функции как аргументы. Это несколько неудобно, но более короткого пути, видимо, нет".
А также на пример после нее. Удачи!
← →
dima_matrix (2003-08-18 19:22) [10]Спасибо за совет, обязательно посмотрю.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c