OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 10 Декабрь, 2024 05:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Бинарные модули OCF
СообщениеДобавлено: Суббота, 27 Октябрь, 2007 09:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
ScrollLock писал(а):
Ответьте тогда на простой вопрос - если "впрыснуть" в модуль агрессивную ассемблерную вставку, он сможет развалить всю интегрированную среду?

Чтобы "впрыснуть", Вам придётся явно указать IMPORT SYSTEM. И Ваш модуль будут внимательно изучать, прежде чем начать использовать :-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Октябрь, 2007 10:12 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 166
Илья Ермаков писал(а):
Чтобы "впрыснуть", Вам придётся явно указать IMPORT SYSTEM. И Ваш модуль будут внимательно изучать, прежде чем начать использовать

Но ведь можно сделать "впрыск" иначе: написать программу с кучей мусорного кода в одной из процедур, далее "занопить" его и писать, что в голову взбредёт, уже в самом ocf-файле с помощью HIEW =)

Илья Ермаков писал(а):
Вот в чём и соль - народ пытается меряться с Блекбоксом как с IDE и видит, что панель инструментов "короче" :-), не понимая того, что это целая операционная среда, микро-ОС.

Но ведь по сравнению с разработкой компилятора и загрузчика/среды для OCF-файлов создание среды с некоторыми "рюшечками" (пусть минимальными) - это не так сложно. Я не согласен с категоричным тоном высказываний w0nder (свою правоту можно доказывать более культурными методами), но он правильно говорит, что среда излишне аскетична. От себя добавлю - ещё и документации бы побольше. Turbo Pascal документирован значительно лучше...

Цитата:
Не хотят подсаживать народ на "хацкерские тулзы".

А документация на формат OCF есть в общем доступе или это закрытая информация? Там x86 код или байт-код?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Октябрь, 2007 11:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
ScrollLock писал(а):
Цитата:
Не хотят подсаживать народ на "хацкерские тулзы".

А документация на формат OCF есть в общем доступе или это закрытая информация? Там x86 код или байт-код?

Спецификация всех форматов ББ есть в стандартной поставке, в каталоге Dev/Spec.
Там - x86-код, метаинформация и символьная информация.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Октябрь, 2007 23:57 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 166
Борис Рюмшин писал(а):
Уважаемый ScrollLock (и все остальные), давайте не будем смешивать беседу по конкретной теме с разборками. Если нужно, я отделю соответствующие сообщения.

Это было бы весьма полезным. А то обсуждение бинарников BlackBox пока на "крутые разборки" никак не тянет :)

Илья Ермаков писал(а):
Спецификация всех форматов ББ есть в стандартной поставке, в каталоге Dev/Spec.
Там - x86-код, метаинформация и символьная информация.

Спецификацию нашёл, она оформлена с помощью какой-то очень странной нотации и почти не поясняет смысл того или иного поля. С заголовком разобрался (написал сишную структуру и разобрал по составу), с метаинформацией и релокейшенами всё сложнее. Какой модуль выполняет загрузку этих ocf-ок?
Теперь у меня стойкое ощущение, что для среды BlackBox модули можно делать хоть на FASM, хоть на Си :). Был бы линковщик.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 00:09 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Нотация - обычная НФБ-грамматика вроде бы...
А загрузку и связывание выполняет модуль StdLoader.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 00:29 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 166
Теперь вижу... Погулял по тексту модулей, потихоньку начинаю понимать строение ocf-файла. ИМХО, упрощённый вариант PE. Первые впечатления от исходников среды: идея разбиения на кучу маленьких модулей прекрасна - текст становится значительно более понятным. Но исходники очень мало комментированы. Приходилось видеть кусочки кода FreeDOS и инструментов пользователя из поставки Open Watcom C, там "комментов" ощутимо больше. Я не собираюсь создавать собственную версию BlackBox, но для привлечения разработчиков к порту под Linux (как 32, так 64 - битный) определённо нужна документация по устройству ядра системы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 00:55 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
По опыту возни с ядром - комменты в коде практически не нужны. Вот блок описания к исходнику каждого модуля, дающий общую картину, - да, это бы не помешало :-)

А по поводу кода - за два года работы и сопровождения ББ я оценил особенность Оберона - язык практически не даёт мест для "произвольного выбора" (когда можно написать и так, и так - хоть монетку кидай). Поэтому, если следовать правилам оформления, исходники получаются совершенно единообразными - и в алгоритмических конструкциях никакой "личностности" не остаётся. Уровнем повыше - конечно, да. Например, Framework делали Пфистер, Шиперски и Век, а низкоуровневые модули - другие разработчики, и различия в стиле сразу видны (в низкоуровневых модулях недостаточно расслоили функционал по уровням).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 00:56 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
ScrollLock писал(а):
Первые впечатления от исходников среды: идея разбиения на кучу маленьких модулей прекрасна - текст становится значительно более понятным.

Интересно, через какое время Вы начнёте ощущать модуль не как просто отдельный файл с исходным кодом... а как... как модуль :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 10:28 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 166
Илья Ермаков писал(а):
Интересно, через какое время Вы начнёте ощущать модуль не как просто отдельный файл с исходным кодом... а как... как модуль

Я его сейчас ощущаю примерно как нечто, весьма сходное с DLL. По крайней мере, модуль вполне попадает под определение Dynamic Linked Library.

Илья Ермаков писал(а):
По опыту возни с ядром - комменты в коде практически не нужны. Вот блок описания к исходнику каждого модуля, дающий общую картину, - да, это бы не помешало

Блок описания действительно был бы очень неплох. Я и не предлагал комментировать всё, а хотя бы перед процедурой кратко писать её назначении, а также документировать структуры и смысл глобальных переменных (ну те, которые на уровне модуля). И в длинных кусках кодах иногда бывает полезным разделить комментариями смысловые блоки.

И ещё бросается в глаза странный способ вставки ассемблерных конструкций - в компиляторах Си такое делают не в виде куска двоичного дампа, а с помощью инлайн-ассемблера или создания целиком ассемблерных obj-файлов.

Цитата:
Нотация - обычная НФБ-грамматика вроде бы...

До этого я работал с неофициальной спецификацией на формат PE и со спеками на формат BMP. И чаще всё же применяют таблицы и структуры данных (обычно сишные, но у Вас не тот случай :) )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 10:34 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Не забудьте в своих прогулках по среде воспользоваться составленной документацией на Kernel:
http://wiki.oberoncore.ru/index.php/BlackBox:Kernel

По поводу модуля... Ну, DLL - это с какой-то стороны... :-) Вот возьмите в руки жёсткий диск и шлейф к нему. Подержите в руках. Почувствуйте его реальность и осязаемость, замкнутость в себе и фиксированность компактного интерфейса. Вот в модульном языке модули являются такими же чуть ли не физически осязаемыми блоками архитектуры. Хоть на зуб можно пробовать :-) Шутки шутками, но субъективно ощущается именно так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 10:53 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Предлагая любые измения формата OCF необходимо в обязательном порядке сохранить возможность распознавать и правильно обрабатывать оригинальный OCF. А что конкретно не устраивает сейчас?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 19:59 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 166
Цитата:
А что конкретно не устраивает сейчас?

Сам формат хороший и менять его вряд ли нужно (ну разве что при переходе на 64-битную платформу). Речь идёт о том, чтобы была возможность писать чисто ассемблерные модули и имелась адекватная документация на формат OCF.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 20:24 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А зачем Вам так ассемблер понадобился?

Если очень нужно IMPORT SYSTEM, тег PROCEDURE [code] - и вперёд :-)
Не такое простое занятие, конечно, прямо в машкоде.

Я под Линуксом написал скрипт asm.h:

as -o $1.o $1
ld -o $1.bin --oformat binary $1.o
rm $1.o

Скрипт натравливается на исходник с ассемблерными командами, а на выходе - чистый машкод без заголовков.
Просто брать и вставлять.
Правда, под Линуксом формат ассемблера другой, обратный порядок аргументов команды, префиксы % перед именами регистров, у каждой команды постфикс размера аргументов (movl, addl). Но это удобней интелевской нотации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 20:56 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 166
Илья Ермаков писал(а):
А зачем Вам так ассемблер понадобился?

Просто интересуюсь, было бы интересно, например, написать зашифрованный модуль. А с точки зрения практики: представляете себе, как красиво будет - модуль абстрагирования от аппаратуры, целиком на ASM, а остальной код - всего лишь перекомпиляция :)

Илья Ермаков писал(а):
Скрипт натравливается на исходник с ассемблерными командами, а на выходе - чистый машкод без заголовков.
Просто брать и вставлять.

А как же релокейшены? Насколько я понял, адрес загрузки модуля не фиксирован.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 21:23 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Илья Ермаков писал(а):
А как же релокейшены? Насколько я понял, адрес загрузки модуля не фиксирован.

Ну да, в ББ кодовые процедуры предназначены только для обработки своих параметров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Воскресенье, 28 Октябрь, 2007 21:26 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
ScrollLock писал(а):
Просто интересуюсь, было бы интересно, например, написать зашифрованный модуль. А с точки зрения практики: представляете себе, как красиво будет - модуль абстрагирования от аппаратуры, целиком на ASM, а остальной код - всего лишь перекомпиляция :)

Красиво :-) Мы в новом рантайме сейчас таким же путём пошли - все аппаратно-зависимые вещи, типа кода, привязанного к размеру указателей, операции с памятью и т.п. - в отдельный модуль.

А что касается абстрагирования от ОС, то в рамках одного оборудования при соответственно сделанной архитектуре даже перекомпиляция большинства модулей рантайма становится не нужной.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 04:23 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Илья Ермаков писал(а):
А зачем Вам так ассемблер понадобился?
Я кажется догадываюсь зачем. Да ScrollLock и сам проговорился вначале.
ScrollLock писал(а):
А как же релокейшены? Насколько я понял, адрес загрузки модуля не фиксирован.
Придется свои смещения обрабатывать самому. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 20:36 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 166
Цитата:
Придется свои смещения обрабатывать самому.

В таком случае можно довольно легко получить значение IP (т.е. адреса, по которому идёт выполнение). Это немного похоже на хак, но работает:
Код:
CALL Label:
Label: PUSH EBX


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 21:39 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Интересно что всё-таки дальше планируете? Относительно заявленной темы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Бинарные модули OCF
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 22:03 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
GUEST писал(а):
Интересно что всё-таки дальше планируете? Относительно заявленной темы.

Ну дык и так ясно - что! Безобразия и излишества всякие... :twisted:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB