Нет, просвяти!Сообщение от icebear
Нет, просвяти!Сообщение от icebear
Думаю ясно видно что цитата моя, значит я и ответил, причем тут йокоона? =)Сообщение от icebear
Ну я не обидчивый! Даже могу признать свои промахи и минусы - стараюсь развиваться во всех отношениях 8)
Асм/неасм - что под руку попалось, то и получили Лишь показал механизм открытия/закрытия либлы.Сообщение от elf/2
Я не пц кодер, что значит не является адресом загрузки?в винде тоже можно:
1. в рантайме загрузить библиотеку по имени и получить в какой-то регистровой паре ее handle (он не является адресом загрузки, ну и что?)
У шайтан! Такого видимо нигде нет, если акцентировал внимание на ИНВАЛИДЕ_ДЕРЖАК_ЗНАЧЕНИЕ. АОС вернет сразу номер ошибки.2. если вернули INVALID_HANDLE_VALUE то есть какие-то проблемы, какие именно можно узнать дернув еще одну системную функцию
Также практически, согласен.3. дальше получаем указатель на функцию передав ее имя или порядковый номер (после этого они нам не нужны)
Ага, тоже самое.4. зовем ее по этому указателю напрямую
На пц есть плюс - если не выгрузил лохопрограммер, то вында ввыгрузит ее сама, я прав?5. когда библиотека больше не нужна, выгружаем ее
Не могу представить, тк на амиге все релоцируемо, зачем статика?6. если библиотека собрана без base relocation то грузиться она будет по фиксированным адресам и накладных расходов при загрузке не будет...
Не совсем понял, что ты имеешь тут ввиду.подозреваю что read-only сегменты (код) могут шариться между процессами, хотя утверждать этого не буду
не об этом речь.возможно при компиляции кода получиться больше чем в предложенном примере, но если есть желание то можно и на асме написать...
Анализируя все вышесказанное - утверждаю - пц круче! Но амми ближе и разумней. =)
допустим что ты прав и Windows/Linux реализация динамических библиотек жрет больше ресурсов и работает медленне (хотя как правильно заметил icebear это никто не замерял).Сообщение от acidrain
могу предположить что это результат того что:
1. реализация на Амми менее гибкая
2. на Амми все написано на асме и оптимизировалось ручками
как я понимаю пока никто ничего не мутит. ты сказал что на амми есть уникальная реализация разделяемых библиотек, которой нигде больше нет. более того она идеально подходить для переноса на спекки. народ здесь присутсвующий это серьезно заинтересовало, захотелось (по крайней мере мне) узнать об этом побольше... все ссылки которые здесь пролетали достаточного света не пролилиСообщение от acidrain
и тут не обижаться надо и PC ругать, а объяснить в конструктивном русле что есть что на амми/PC/MacOS/etc.
Я фигею, дорогая редакция... 4 страницы (в общей сложности) наездов... Куда катится мир...
ЗЫ. Судя по вмешательству в дискуссию свежих людей, делаю вывод, что умопомешательства у меня нет. А то вчера уж грешным делом подумал, что мои ответы в теме были лишь в моем сознании, поскольку они не брались в расчет совершенно.
handle - это некий уникальный идентификатор библиотеки (32 битное число)Сообщение от acidrain
это экономит одну-две комманды и наверное больше ничего. если вариантов ошибок много, то все равно придется делать отдельную функцию для их обработки/показа пользователюСообщение от acidrain
да, когда процесс завершиться и если никто ее больше не используетСообщение от acidrain
если несколько процессов загрузили одну и туже библиотеку, то неизменяемые сегменты (например сегмент кода) будет присутсвовать в памяти один раз. хотя на 100% не уверенСообщение от acidrain
ну зачем ты так? я подозреваю что у любой платформы есть чему поучитьсяСообщение от acidrain
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А всё очень просто: lib - это статическая библиотека, она так же релоцируемая, но вот она "впечатывается" в конечной код программы при линковке (с правкой всех вызовов ессно). От этого растёт размер программы. Ну а dll - ты сам знаешь. Причём dll в винде загружается один раз, по первому требованию. Есть возможность загрузить dll напрямую самому (как показал elf/2), либо (как бы это сказать по-русски правильнее, прошу прощение, но русская терминология в этом случае мне почти незнакома) скомпилировать вызов какой-либо функции из нужной библиотеки, так что при исполнении этого вызова винда сама подгрузит библиотеку. Последний метод - это все окна на винде, ибо user32 и gdi32 с запуска системы висят в памяти. На Амиге это вряд ли сделано по-другому.Сообщение от acidrain
Ладно, отвлеклись. Не хотел ни кого обидеть.
В моем варианте - программа запрашивает нужную либлу, основная ее ищет на винте(диске и чем угодно), грузит, возращает точку входа. далее главенствует прога - пользует либлу (несколько, если надо).
В варианте Витамина как это все будет выглядеть?
не ответил на вопрос. имхо =)Сообщение от elf/2
1 - нетСообщение от elf/2
2 - нет, Си и только Си
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)