Автор Тема: BB кодогенератор.  (Прочитано 11105 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
BB кодогенератор.
« : Сентябрь 12, 2011, 03:43:53 pm »
Кто-нибудь разбирался как устроен в ББ кодогенератор? Насколько он там отделим от прочих частей компилятора? А то документации по этим интересным модулям как бы нет совсем. И коментариев нет (даже элементарных - что это за модуль и для чего он). Названия модулей из Dev'a по большей части не интуитивно понятные.

Может кто-нибудь опишет ху из ху в Dev, и как он связан с остальными?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BB кодогенератор.
« Ответ #1 : Сентябрь 15, 2011, 10:45:32 am »

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BB кодогенератор.
« Ответ #2 : Сентябрь 15, 2011, 10:49:33 am »
Почитай здесь о том как устроен компилятор: OP2.Paper.pdf

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BB кодогенератор.
« Ответ #3 : Сентябрь 15, 2011, 10:52:11 am »
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BB кодогенератор.
« Ответ #4 : Сентябрь 15, 2011, 01:56:25 pm »
Глупый вопрос - а какой модуль занимается генерацией непосредственно ББшного COD файла (если не напутал расширение конечно), то есть файла где лежит уже кошерный ББшный скомпилированный модуль.

Внешние dll/exe понятное дело, генерит DevLinker, а вот ББшные модули кто генерит? Ведь там же тоже какой-то свой формат, а не голый набор инструкций для процессора.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BB кодогенератор.
« Ответ #5 : Сентябрь 15, 2011, 02:11:47 pm »
Не могу заявлять, что я разбираюсь в исходниках компилятора, но кое в чём разобрался.
В том то и дело, как раз используются инструкции процессора i386. Генерация кода находится в процедуре DevCPV486.Module. Другое дело, что код не зависит от низлежащей ОС.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BB кодогенератор.
« Ответ #6 : Сентябрь 15, 2011, 02:37:00 pm »
Не могу заявлять, что я разбираюсь в исходниках компилятора, но кое в чём разобрался.
В том то и дело, как раз используются инструкции процессора i386. Генерация кода находится в процедуре DevCPV486.Module. Другое дело, что код не зависит от низлежащей ОС.
Я понимаю что инструкции в скомпилированных модулях уже для 486. Но они там явно не сплошняком навалены. Там же небось есть еще и какие-нибудь символы. Какое-то выравнивание и так далее. Скажем объектники которые генерит gcc, они ведь не сплошь только из инструкций процессора состоят, там есть некая внутренняя структура, формат. Чтобы было понятно как их потом обратно в кучу собирать.

Или COD-файлы это таки код сплошняком, а абсолютно вся информация по содержимому сидит исключительно в SYM-файле?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BB кодогенератор.
« Ответ #7 : Сентябрь 15, 2011, 03:06:15 pm »
Или COD-файлы это таки код сплошняком, а абсолютно вся информация по содержимому сидит исключительно в SYM-файле?
Подробностей не знаю, не копался. Но есть открытые спеки, если нужно.
Для запуска модулей не нужны SYM (run time), а только COD. И, наоборот, для компиляции не нужны COD, ибо достаточно информации об интерфейсе в SYM.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BB кодогенератор.
« Ответ #8 : Сентябрь 15, 2011, 03:13:39 pm »
Или COD-файлы это таки код сплошняком, а абсолютно вся информация по содержимому сидит исключительно в SYM-файле?
Подробностей не знаю, не копался. Но есть открытые спеки, если нужно.
Нужно. Где эти спеки лежат?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BB кодогенератор.
« Ответ #9 : Сентябрь 15, 2011, 03:25:49 pm »
Насколько я понимаю, формат COD является своего рода EXE-шником. Однако, он поддерживается лишь средой запуска BBCB, в частности, модулями Kernel + StdLoader. Типичные объектные файлы (COFF и другие) включают и символьную информацию (), и информацию для исполнения кода (code segment, data segment). В отличие от них, у платформы Блэкбокс для модуля эти части разделены на 2 файла.

Вроде так.

Спеки лежат в Dev/Docu/Spec.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BB кодогенератор.
« Ответ #10 : Сентябрь 15, 2011, 03:29:53 pm »
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BB кодогенератор.
« Ответ #11 : Сентябрь 15, 2011, 03:32:02 pm »
Спеки лежат в Dev/Docu/Spec.
Я там такого файла не нахожу. То есть в Dev/Docu нет Spec'a
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BB кодогенератор.
« Ответ #12 : Сентябрь 15, 2011, 03:40:52 pm »
Я проводил эксперименты по запуску модулей из комадной строки с помощью написанного мною инструмента под названием libBBox. Он позволял (работает ли сейчас - не знаю) запускать модули (COD) в Linux+Windows с указанием аргументов. Исходники лежат в хранилище SVN OberonRevival.

В общем, файл .COD содержит точки входа, то есть то, что нужно для запуска.

Спеки лежат в Dev/Docu/Spec.
Я там такого файла не нахожу. То есть в Dev/Docu нет Spec'a
Прости, в Dev/Spec.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BB кодогенератор.
« Ответ #13 : Сентябрь 15, 2011, 03:44:02 pm »
Спасибо, нашел.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"