blackbox:compiler
Различия
Показаны различия между двумя версиями страницы.
|
|
blackbox:compiler [2018/05/23 13:19] иван_денисов |
blackbox:compiler [2020/10/29 07:08] |
====== Описание работы компилятора Блэкбокса ====== | |
| |
Компилятор Блэкбокса реализован на основе переносимого компилятора Оберона, который на английском описан в: | |
* сообщении [[ftp://ftp.ethoberon.ethz.ch/Oberon/OberonV4/Docu/OP2.Paper.ps|Crelier R. OP2 : A portable Oberon-2 compiler. 1991.]] {{ :blackbox:crelier_1991.pdf |PDF }} | |
* диссертации [[http://e-collection.library.ethz.ch/eserv/eth:39386/eth-39386-02.pdf|Crelier R. Separate compilation and module extension, 1994]] | |
* публикации [[http://oberon2005.oberoncore.ru/paper/p_obesys.pdf|Brandis M.M., Crelier R., Franz M., Templ J. The Oberon System Family // SOFTWARE-PRACTICE AND EXPERIENCE. 1995. Vol. 25. P. 1331–1366.]] {{ :blackbox:the_oberon_system_family.pdf |версия 2}} | |
| |
| |
Компилятор выполнен по трехфазной схеме, с возможностью смены кодогенератора под конкретную платформу без смены //парсера// и //AST-дерева//((AST --- abstract syntax tree (абстрактное синтаксическое дерево). Служит хранению текста программы в промежуточном состоянии между исходным текстом и машинным кодом. Это не байт-код. Исполнять нельзя. Но AST-дерево даёт гарантию, что код программы корректный (иначе нельзя получить такое дерево), и позволяет привести к машинному коду на нужной платформе, что сильно облегчает портирование программ)). | |
| |
Предполагается, что смена платформы происходит путем подмены модуля ''DevCompilerXxx'', который после успешного завершения процесса создания //AST-дерева// передает результат сменному бэкенду ''DevCPVxxx''. | |
| |
По модулям это расписано тут: http://obertone.ru/blackbox/dev | |
blackbox/compiler.txt · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)