OberonCore https://forum.oberoncore.ru/ |
|
Бинарные модули OCF https://forum.oberoncore.ru/viewtopic.php?f=2&t=708 |
Страница 1 из 4 |
Автор: | Илья Ермаков [ Суббота, 27 Октябрь, 2007 09:35 ] |
Заголовок сообщения: | Бинарные модули OCF |
ScrollLock писал(а): Ответьте тогда на простой вопрос - если "впрыснуть" в модуль агрессивную ассемблерную вставку, он сможет развалить всю интегрированную среду? Чтобы "впрыснуть", Вам придётся явно указать IMPORT SYSTEM. И Ваш модуль будут внимательно изучать, прежде чем начать использовать |
Автор: | ScrollLock [ Суббота, 27 Октябрь, 2007 10:12 ] |
Заголовок сообщения: | Re: "Привет клоунам :)" от Романа Чаднова |
Илья Ермаков писал(а): Чтобы "впрыснуть", Вам придётся явно указать IMPORT SYSTEM. И Ваш модуль будут внимательно изучать, прежде чем начать использовать Но ведь можно сделать "впрыск" иначе: написать программу с кучей мусорного кода в одной из процедур, далее "занопить" его и писать, что в голову взбредёт, уже в самом ocf-файле с помощью HIEW =) Илья Ермаков писал(а): Вот в чём и соль - народ пытается меряться с Блекбоксом как с IDE и видит, что панель инструментов "короче" , не понимая того, что это целая операционная среда, микро-ОС. Но ведь по сравнению с разработкой компилятора и загрузчика/среды для OCF-файлов создание среды с некоторыми "рюшечками" (пусть минимальными) - это не так сложно. Я не согласен с категоричным тоном высказываний w0nder (свою правоту можно доказывать более культурными методами), но он правильно говорит, что среда излишне аскетична. От себя добавлю - ещё и документации бы побольше. Turbo Pascal документирован значительно лучше... Цитата: Не хотят подсаживать народ на "хацкерские тулзы". А документация на формат OCF есть в общем доступе или это закрытая информация? Там x86 код или байт-код? |
Автор: | Илья Ермаков [ Суббота, 27 Октябрь, 2007 11:52 ] |
Заголовок сообщения: | Re: "Привет клоунам :)" от Романа Чаднова |
ScrollLock писал(а): Цитата: Не хотят подсаживать народ на "хацкерские тулзы". А документация на формат OCF есть в общем доступе или это закрытая информация? Там x86 код или байт-код? Спецификация всех форматов ББ есть в стандартной поставке, в каталоге Dev/Spec. Там - x86-код, метаинформация и символьная информация. |
Автор: | ScrollLock [ Суббота, 27 Октябрь, 2007 23:57 ] |
Заголовок сообщения: | Re: "Привет клоунам :)" от Романа Чаднова |
Борис Рюмшин писал(а): Уважаемый ScrollLock (и все остальные), давайте не будем смешивать беседу по конкретной теме с разборками. Если нужно, я отделю соответствующие сообщения. Это было бы весьма полезным. А то обсуждение бинарников BlackBox пока на "крутые разборки" никак не тянет Илья Ермаков писал(а): Спецификация всех форматов ББ есть в стандартной поставке, в каталоге Dev/Spec. Там - x86-код, метаинформация и символьная информация. Спецификацию нашёл, она оформлена с помощью какой-то очень странной нотации и почти не поясняет смысл того или иного поля. С заголовком разобрался (написал сишную структуру и разобрал по составу), с метаинформацией и релокейшенами всё сложнее. Какой модуль выполняет загрузку этих ocf-ок? Теперь у меня стойкое ощущение, что для среды BlackBox модули можно делать хоть на FASM, хоть на Си . Был бы линковщик. |
Автор: | Илья Ермаков [ Воскресенье, 28 Октябрь, 2007 00:09 ] |
Заголовок сообщения: | Re: "Привет клоунам :)" от Романа Чаднова |
Нотация - обычная НФБ-грамматика вроде бы... А загрузку и связывание выполняет модуль StdLoader. |
Автор: | ScrollLock [ Воскресенье, 28 Октябрь, 2007 00:29 ] |
Заголовок сообщения: | Re: "Привет клоунам :)" от Романа Чаднова |
Теперь вижу... Погулял по тексту модулей, потихоньку начинаю понимать строение ocf-файла. ИМХО, упрощённый вариант PE. Первые впечатления от исходников среды: идея разбиения на кучу маленьких модулей прекрасна - текст становится значительно более понятным. Но исходники очень мало комментированы. Приходилось видеть кусочки кода FreeDOS и инструментов пользователя из поставки Open Watcom C, там "комментов" ощутимо больше. Я не собираюсь создавать собственную версию BlackBox, но для привлечения разработчиков к порту под Linux (как 32, так 64 - битный) определённо нужна документация по устройству ядра системы. |
Автор: | Илья Ермаков [ Воскресенье, 28 Октябрь, 2007 00:55 ] |
Заголовок сообщения: | Re: "Привет клоунам :)" от Романа Чаднова |
По опыту возни с ядром - комменты в коде практически не нужны. Вот блок описания к исходнику каждого модуля, дающий общую картину, - да, это бы не помешало А по поводу кода - за два года работы и сопровождения ББ я оценил особенность Оберона - язык практически не даёт мест для "произвольного выбора" (когда можно написать и так, и так - хоть монетку кидай). Поэтому, если следовать правилам оформления, исходники получаются совершенно единообразными - и в алгоритмических конструкциях никакой "личностности" не остаётся. Уровнем повыше - конечно, да. Например, Framework делали Пфистер, Шиперски и Век, а низкоуровневые модули - другие разработчики, и различия в стиле сразу видны (в низкоуровневых модулях недостаточно расслоили функционал по уровням). |
Автор: | Илья Ермаков [ Воскресенье, 28 Октябрь, 2007 00:56 ] |
Заголовок сообщения: | Re: "Привет клоунам :)" от Романа Чаднова |
ScrollLock писал(а): Первые впечатления от исходников среды: идея разбиения на кучу маленьких модулей прекрасна - текст становится значительно более понятным. Интересно, через какое время Вы начнёте ощущать модуль не как просто отдельный файл с исходным кодом... а как... как модуль |
Автор: | ScrollLock [ Воскресенье, 28 Октябрь, 2007 10:28 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Илья Ермаков писал(а): Интересно, через какое время Вы начнёте ощущать модуль не как просто отдельный файл с исходным кодом... а как... как модуль Я его сейчас ощущаю примерно как нечто, весьма сходное с DLL. По крайней мере, модуль вполне попадает под определение Dynamic Linked Library. Илья Ермаков писал(а): По опыту возни с ядром - комменты в коде практически не нужны. Вот блок описания к исходнику каждого модуля, дающий общую картину, - да, это бы не помешало Блок описания действительно был бы очень неплох. Я и не предлагал комментировать всё, а хотя бы перед процедурой кратко писать её назначении, а также документировать структуры и смысл глобальных переменных (ну те, которые на уровне модуля). И в длинных кусках кодах иногда бывает полезным разделить комментариями смысловые блоки. И ещё бросается в глаза странный способ вставки ассемблерных конструкций - в компиляторах Си такое делают не в виде куска двоичного дампа, а с помощью инлайн-ассемблера или создания целиком ассемблерных obj-файлов. Цитата: Нотация - обычная НФБ-грамматика вроде бы... До этого я работал с неофициальной спецификацией на формат PE и со спеками на формат BMP. И чаще всё же применяют таблицы и структуры данных (обычно сишные, но у Вас не тот случай ) |
Автор: | Илья Ермаков [ Воскресенье, 28 Октябрь, 2007 10:34 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Не забудьте в своих прогулках по среде воспользоваться составленной документацией на Kernel: http://wiki.oberoncore.ru/index.php/BlackBox:Kernel По поводу модуля... Ну, DLL - это с какой-то стороны... Вот возьмите в руки жёсткий диск и шлейф к нему. Подержите в руках. Почувствуйте его реальность и осязаемость, замкнутость в себе и фиксированность компактного интерфейса. Вот в модульном языке модули являются такими же чуть ли не физически осязаемыми блоками архитектуры. Хоть на зуб можно пробовать Шутки шутками, но субъективно ощущается именно так. |
Автор: | Сергей Оборотов [ Воскресенье, 28 Октябрь, 2007 10:53 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Предлагая любые измения формата OCF необходимо в обязательном порядке сохранить возможность распознавать и правильно обрабатывать оригинальный OCF. А что конкретно не устраивает сейчас? |
Автор: | ScrollLock [ Воскресенье, 28 Октябрь, 2007 19:59 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Цитата: А что конкретно не устраивает сейчас? Сам формат хороший и менять его вряд ли нужно (ну разве что при переходе на 64-битную платформу). Речь идёт о том, чтобы была возможность писать чисто ассемблерные модули и имелась адекватная документация на формат OCF. |
Автор: | Илья Ермаков [ Воскресенье, 28 Октябрь, 2007 20:24 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
А зачем Вам так ассемблер понадобился? Если очень нужно IMPORT SYSTEM, тег PROCEDURE [code] - и вперёд Не такое простое занятие, конечно, прямо в машкоде. Я под Линуксом написал скрипт asm.h: as -o $1.o $1 ld -o $1.bin --oformat binary $1.o rm $1.o Скрипт натравливается на исходник с ассемблерными командами, а на выходе - чистый машкод без заголовков. Просто брать и вставлять. Правда, под Линуксом формат ассемблера другой, обратный порядок аргументов команды, префиксы % перед именами регистров, у каждой команды постфикс размера аргументов (movl, addl). Но это удобней интелевской нотации. |
Автор: | ScrollLock [ Воскресенье, 28 Октябрь, 2007 20:56 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Илья Ермаков писал(а): А зачем Вам так ассемблер понадобился? Просто интересуюсь, было бы интересно, например, написать зашифрованный модуль. А с точки зрения практики: представляете себе, как красиво будет - модуль абстрагирования от аппаратуры, целиком на ASM, а остальной код - всего лишь перекомпиляция Илья Ермаков писал(а): Скрипт натравливается на исходник с ассемблерными командами, а на выходе - чистый машкод без заголовков. Просто брать и вставлять. А как же релокейшены? Насколько я понял, адрес загрузки модуля не фиксирован. |
Автор: | Илья Ермаков [ Воскресенье, 28 Октябрь, 2007 21:23 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Илья Ермаков писал(а): А как же релокейшены? Насколько я понял, адрес загрузки модуля не фиксирован. Ну да, в ББ кодовые процедуры предназначены только для обработки своих параметров. |
Автор: | Илья Ермаков [ Воскресенье, 28 Октябрь, 2007 21:26 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
ScrollLock писал(а): Просто интересуюсь, было бы интересно, например, написать зашифрованный модуль. А с точки зрения практики: представляете себе, как красиво будет - модуль абстрагирования от аппаратуры, целиком на ASM, а остальной код - всего лишь перекомпиляция Красиво Мы в новом рантайме сейчас таким же путём пошли - все аппаратно-зависимые вещи, типа кода, привязанного к размеру указателей, операции с памятью и т.п. - в отдельный модуль. А что касается абстрагирования от ОС, то в рамках одного оборудования при соответственно сделанной архитектуре даже перекомпиляция большинства модулей рантайма становится не нужной. |
Автор: | Сергей Оборотов [ Понедельник, 29 Октябрь, 2007 04:23 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Илья Ермаков писал(а): А зачем Вам так ассемблер понадобился? Я кажется догадываюсь зачем. Да ScrollLock и сам проговорился вначале.ScrollLock писал(а): А как же релокейшены? Насколько я понял, адрес загрузки модуля не фиксирован. Придется свои смещения обрабатывать самому.
|
Автор: | ScrollLock [ Понедельник, 29 Октябрь, 2007 20:36 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Цитата: Придется свои смещения обрабатывать самому. В таком случае можно довольно легко получить значение IP (т.е. адреса, по которому идёт выполнение). Это немного похоже на хак, но работает: Код: CALL Label:
Label: PUSH EBX |
Автор: | Сергей Оборотов [ Понедельник, 29 Октябрь, 2007 21:39 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
Интересно что всё-таки дальше планируете? Относительно заявленной темы. |
Автор: | Wlad [ Понедельник, 29 Октябрь, 2007 22:03 ] |
Заголовок сообщения: | Re: Бинарные модули OCF |
GUEST писал(а): Интересно что всё-таки дальше планируете? Относительно заявленной темы. Ну дык и так ясно - что! Безобразия и излишества всякие... |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |