Форумы|Эльфы
ELFPack 3.0 by Z.Vova & Ganster

<<Пред. | След.>>
1,2,3...100,101,102


Стр.

Сообщения
STANOK[2880](Off)Цит
15 Июл 2011, 3:21
Это не мод и не продолжение епака 3 от Dimadze и Just Crazy
Со времен когда ещё был жив вапер и форумы трепещали новыми темами и новыми эльфами, с последней версии лоадер так и никто не осмелился внести какие-нибудь изменения непосредственно в сам загрузчик эльфов, тобиш парсер форматат Elf. Почему спросите вы меня? Да элементарно, всем было лень читать доки и писать что-либо. Было много модов из которых я ни один не поставил по одной простой причине: эльфлоадер - это загрузчик исполняемых файлов, а не плюшка для баловства. Ну да ладно, пропустим предисловие... И так в один прекрасный день я предложил Лёхе(Ganster) написать нечто похожее на нормальный стандартизированный лоадер, на что он согласился. Было перекурено 100500 доков, перерыто 100500 сорцов и потрачено много времени. Был период когда мы забили на большей половине разработки. Но в скорем времени мы продолжили и сделали полностью соответсвующий стандартам UNIX загрузчик исполняемых файлов ELF. Но возможно возникнет у вас вопросс, а зачем? Дело в том что старый лоадер был простым загрузчик простых эльфов. Новый лоадер даёт обширные возможности. И так начнем.

[+] Shared Library (*.so)

Что это такое и с чем его едят. Наверное вы заметили что эльфы в последнее времени используют все больше спортированных библиотек из OpenSource сообщетва, и соответственно размер 2х эльфов которые используют один и тот-же код растет и занимает место на диске и в памяти. Для этого были разработаны динамически подгружаемые библиотеки называемые Shared Library. Как же это работает? При запуске эльфа эльф не содержит огромный код библиотеки в себе, а просит подлинковать лоадера к нему динамическую библиотеку. Что делает в это время лоадер? Лоадер подгружает разделяемую библиотеку и линкует требуемые функции к эльфу. Потом запускается второй эльф который опять же использует ту же библиотеку, что делает лоадер? Лоадер опять же ищет требуемую библиотеку и находит её среди уже загруженых, он берёт эту библиотеку и линкует ко второму эльфу. Здорово правда? 2 эльфа пользуются одним кодом. Экономия оперативной памяти и места на диске. Это есть самая главная причина по которой мы начали писать загрузчик.

В итоге получился загрузчик который умеет загружать эльфы собраные на gcc безовсяких скриптов, и использовать разделяемые библиотеки. Напомню что загрузчик был переписан _полностью_ от старого лоадера не осталось ни строчки кода. Вследствии чего (мб меня таращит) и увеличилась скорость загрузки эльфов.

Вопрос: А как же совместимость? Будут мои старые эльфы работать на новом лоадере?
Ответ: Да. Мы сделали соместимость со старыми эльфами, наш лоадер вполне с ними дружит и запускает.


Инструкции по сборке эльфов и разделяемых библиотек будут потом, с инструкцией по прикручиванию всего этого дела к IDE Code::Block

Что такое libc.so?
Это набор библиотек стандарта Си, который я портировал для сименса. Не все функции реализованы но большинство уже есть и работают.

Что такое libm.so?
Это набор функций для работы с математикой, тобиш math.h. Который тоже портирован мной.

А как же обстоят дела со сви функциями на гцц?
На освоение гцц, линкера, всех примудростей стандартов и так далее у меня ушло учень много времени но я всё таки пришёл к истине. Я заставил собирать гцц нормальные эльфы и использовать функции из таблицы сви. Вы не увидели ответа? Значит плохо читали. Вызов сви производится по методу switab_addres+(sizeof(void*)*swi_num) в обход процессорной комманды swi. Таким образом вызов функции происходит быстрей чем вызов через swi инструкцию.

А как обстоят дела со свилибой, её нада портировать?
Да её нада портировать. Но я поступил как настоящий программист - написал прогу которая за меня сама все спортировала  . Синтаксис свилибы немного отличается от иаровской, это тоже все моё изобретение и труды.

А как обстоят дела с конфигами? Они будут работать?
Да. Я переписал загрузчик конфигов для работы с гцц. Все работает (c)

А долго ли портировать эльфы с иара на гцц?
Нет. Все портируется очень легко. Я собирал натаськи и прочую фигню.


Установка:
Откатить старый, накатить новый. Или поставить поверх кроме E71.

Где найти?
1. Зайти сюда
2. Выбрать папку название которой соответствует вашему телефону
3. Скачать патч

[*] Улучшена совместимость со старыми эльфами
[+] Поддержка симлинков для либ, симлинк обычный текстовый файл содержащий только путь
[*] Поменян прицыпе вызова конструкторов, они теперь вызываются библиотекой libcrt, разрабам следует обновиться из темы разработки
Тестовые эльфы
Фак будет дополнятся.
[*] Исправлено 2 ошибки в освобождении либ
[+] Добавлено опциональная очистка либ при не использовании, вы можете выключить реалтайм освобождение тем самым увеличить скорость последующего запуска и освобождения эльфов.
[+] в свилиб вынесены 4 новых функций

0x2F6 getBaseEnviron - указатель на переменную окружения(требуется для либц)
0x2F7 dlerror        - при ошибке открытия либы эта функция возвратит ошибку в текстовом виде
0x2F8 dlclean_cache  - принудительная очистка кеша либ(если отключена реалтайм очистка)
0x2F9 SHARED_TOP     - указатель на последнюю загруженую либу


11.12.11
[*] исправлена серьёзная ошибка из за которой не правильно импортились некоторые функции из либ, обычно собраных на С++. К примеру не работал fstream из stdc++. Я сперва думал что это глюк в либе, но когда линканул статически то удивился что оно заработало, и стал искать ошибку в паке
[+] По притензиям некоторых, добавлена в конфиг настройка путей к папкам либ
[+] добавлен в конфиг опциональный лог. Так как сложно выловить в мессагах че там не хватает эльфу. Чтобы выключить лог, ставим максимальный размер на 0.

Testing(08.01.12)
[+] Поиск либ в корне папки с эльфом
[*] Утечка в логе

=== 02.02.12
[*] fix dlopen(Data Abort)
[+] поиск кеш картинок происходит по хешу имени, должно немного дать прироста
dlcache.elf.zip (1.22 KB)
Скачано 175 раз(а)
elf_sg.elf.zip (1.67 KB)
Скачано 133 раз(а)
elf_nsg.elf.zip (1.68 KB)
Скачано 134 раз(а)
elf_el.elf.zip (1.69 KB)
Скачано 163 раз(а)
Ganster41[927](Off)Цит
15 Июл 2011, 3:23
reserved
Zak3[961](Off)Цит
15 Июл 2011, 3:31
Всё-таки решили продолжить, огромное спасибо, поставлю сразу как буду у компа. По плюсу) А старая-то тема загнулась
Ganster41[927](Off)Цит
15 Июл 2011, 3:46
Если под "старой темой" подразумевался мод с "расширенным конфигом", и некими edl - то там все довольно спорно было) Было несколько интересных плюшек от Dimadze, правда не пойму какое отношение они имели к лоадеру)
Здесь же был совсем другой подход - сделать более кошерную загрузку эльфов + поддержку динамических библиотек, а не влосипедов)
ASSking[209](Off)Цит
15 Июл 2011, 4:03
Вот это реально круто!
Но если он так увеличился в размере то влезет ли он в сголды? и если да, то как будут обстоять дела с прозрачностью в 65-х сериях?
STANOK[2880](Off)Цит
15 Июл 2011, 4:11
Влезть то влезет(если нет, то найдём другое место), а вот прозрачность будет такая-же как и в лоадере 2.3
ASSking[209](Off)Цит
15 Июл 2011, 4:18
в смысле он будет понимать только "прозрачно и непрозрачно" или будет что-то типа 24+альфа?
Twitch[638](Off)Цит
15 Июл 2011, 4:19
Ж**Акороль, "пост не читай @ сразу отвечай", да? написано же, что лоадер переписан. есть хоть слово про прозрачность?
ASSking[209](Off)Цит
15 Июл 2011, 4:34
Twitch пишет:
"написано же, что лоадер переписан. есть хоть слово про прозрачность?"

откуда мне знать какая из его частей отвечает за прозрачность?
--------
Ну да ладно, главное чтоб он у мну вообще работал.
з.ы.: готов быть тестером на cx70sw56.
green[186](Off)Цит
15 Июл 2011, 4:51
STANOK, Тоесть теперь есть возможность вот так вот добавить библиотеки, запускать линуксовские эльфы? Если да то это настолько круто, что я даже себе представить боюсь дальнейшие перспективы *CRAZY* ... +100500
З.Ы. прости нуба :-[
З.З.Ы. ну тоесть взять/скомпилировать любой проект ака консольные приложения.. //бред

<<Пред. | След.>>
1,2,3...100,101,102


Стр.

Ответить на тему
Сохранить в txt