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