FPC позволяет менять системную библиотеку?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

FPC позволяет менять системную библиотеку?

Сообщение Celestia » 08.12.2010 08:22:03

Здравствуйте! Мне сказали что FPC позволяет менять системную библиотеки (kernel32, user32...), в том числе на практически полное их отсутствие, я хотел узнать правда ли это, если да, то как это реализовать? Мне нужно просто сделать так чтобы при запуске моей программы управление сразу передавалось на мой код begin ... end
Спасибо!
Celestia
незнакомец
 
Сообщения: 3
Зарегистрирован: 21.11.2010 10:09:32

Re: FPC позволяет менять системную библиотеку?

Сообщение Kitayets » 08.12.2010 14:05:27

задача не понятна.

скорее всего то что вы хотите невозможно. такое было возможно во времена DOS, в современных ОС всеми процессами управляет ядро - выделяются ресурсы, адресное пространство, стек, происходит поиск и подключение библиотек, к каждой программе присоединяется некий "пролог", загружаются ресурсы, код, данные, и т.д.. таким образом с момента "запуска" программы через некий интерфейс ОС (командная строка или explorer), до момента входа в блок begin.. end. происходит много чего и выполняется много кода, в том числе и из библиотек kernel32, user32... т.к. эти библиотеки суть интерфейс к ядру ОС Windows. и это поведение не зависит от среды разработки. попробуйте запустить свою программу в oledbg и многое (возможно) станет для Вас очевидно.
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: FPC позволяет менять системную библиотеку?

Сообщение bw » 12.12.2010 12:15:24

Вам нужно переписать system.pp (и может 1-2 других системных модуля, в зависимости от целевой ОС и от версии компилятора) и скомпилировать его без использования RTL (есть там ключик у компилятора, не помню какой). Далее, при сборке приложения/библиотеки используется именно этот модуль (надо разобраться с путями, что бы брался ваш, а не стандартный). Можете посмотреть как реализован RTL для одной из множества ОСей (и делать по примеру). Минимальный такой системный модуль может в десяток другой строк уложиться. Но... у вас не будет не только WriteLn, но так же поддержки строк, вещественных чисел и очень много другого, включая управление кучей (выделение и освобождение памяти), ибо всё это реализовано в RTL (system.pp), а не магическим образом добавляется компилятором в результирующий бинарник.

p.s. Зависимость от системы контролируется полностью, я делал RTL для KolibriOS, но со сборкой в PE, никаких намёков на win32 в коде не сохранилась и проблем со сборкой и исполнением приложений не возникало.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: FPC позволяет менять системную библиотеку?

Сообщение Иван Шихалев » 12.12.2010 17:31:19

bw
А какой минимум нужно реализовать в собственном System, чтобы скомпилировалось?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: FPC позволяет менять системную библиотеку?

Сообщение *vmr » 14.12.2010 00:36:21

C FPC такими извращениями не занимался, но с DCC, действительно можно выкинуть все лишнее и впихнуть в 478 БАЙТ (!!!)
http://xproger.mentalx.org/old/?id=1&pa ... delphi_min
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

Re: FPC позволяет менять системную библиотеку?

Сообщение Verx0Laz » 14.12.2010 04:16:30

Celestia, тебе только-что ответили на твой вопрос, но, судя по формулировке твоего вопроса, тот, кто тебе его подсказал, врядли рассчитывал на то, что ответ существует :)))) Прикинь, а ответ есть :))
Аватара пользователя
Verx0Laz
постоялец
 
Сообщения: 125
Зарегистрирован: 11.09.2007 11:24:07

Re: FPC позволяет менять системную библиотеку?

Сообщение bw » 15.12.2010 15:31:19

> А какой минимум нужно реализовать в собственном System, чтобы скомпилировалось?

Это вариант для Linux x86_64. Для i386 нужно заменить prt0.as (он был взят мной, без изменений, из сорцев RTL 2.2.4).
Это такой минимум, что даже модули не будут инициализироваться, насколько я понимаю.
Для win32 вместо prt0.as нужно использовать sysinitpas.pp. Собственно я так и работал когда-то, а вот для Linux пришлось разбираться вновь.

..bw
Вложения
puny-linux-64.tar.bz2
(2.02 КБ) Скачиваний: 368
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru