Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
Следующая версия
Следующая версия справа и слева
|
bb:dev [2015/01/25 14:47] kpmy [[[bb:dev:cpt|DevCPT]]] |
bb:dev [2016/04/06 19:56] prospero78 [DevCPL486] |
====== Подсистема Dev ====== | ====== Подсистема Dev ====== |
Подсистема Dev содержит в себе компилятор и средства отладки. | Подсистема ''Dev'' содержит в себе компилятор и средства отладки. |
Компилятор реализован на основе переносимого компилятора Оберона [[ftp://ftp.ethoberon.ethz.ch/Oberon/OberonV4/Docu/OP2.Paper.ps.gz|OP2]]. | Компилятор реализован на основе переносимого компилятора **Оберона** [[ftp://ftp.ethoberon.ethz.ch/Oberon/OberonV4/Docu/OP2.Paper.ps.gz|OP2]]. |
| |
====== Описание ====== | ====== Описание ====== |
Компилятор выполнен по трехфазной схеме, с возможностью смены кодогенератора под конкретную платформу без смены парсера и AST-дерева. \\ | Компилятор выполнен по трехфазной схеме, с возможностью смены кодогенератора под конкретную платформу без смены //парсера// и //AST-дерева//((AST --- abstract syntacsis tree (абстрактное синтаксическое дерево). Служит хранению текста программы в промежуточном состоянии между исходным текстом и машинным кодом. Это не байт-код. Исполнять нельзя. Но AST-дерево даёт гарантию, что код программы корректный (иначе нельзя получить такое дерево), и позволяет привести к машинному коду на нужной платформе, что сильно облегчает портирование программ --- //[[prospero.78.su@gmail.com|Валерий Шипков]] 2016/04/05 20:15//)).\\ |
Предполагается, что смена платформы происходит путем подмены модуля DevCompilerXxx, который после успешного завершения процесса создания AST-дерева передает результат сменному бэкенду DevCPVxxx. | Предполагается, что смена платформы происходит путем подмены модуля ''DevCompilerXxx'', который после успешного завершения процесса создания //AST-дерева// передает результат сменному бэкенду ''DevCPVxxx''. |
| |
====== Модули компилятора ====== | ====== Модули компилятора ====== |
| |
===== DevCompiler ===== | ===== DevCompiler ===== |
DevCompiler - командный модуль, подготавливает текст модулей для компиляции. А еще подготавливает опции компиляции и некоторые глобальные значения других модулей компилятора. Существует так же в версиях DevCompilerO2, DevCompiler68k | ''DevCompiler'' - командный модуль, подготавливает текст модулей для компиляции. А еще подготавливает опции компиляции и некоторые глобальные значения других модулей компилятора. Существует так же в версиях ''DevCompilerO2'', ''DevCompiler68k''. |
| |
===== DevCPM ===== | ===== DevCPM ===== |
DevCPM - от слова **M**achine, определяет машинно-зависимые константы, тип процессорной архитектуры. Работает с символьными файлами непосредственно, знает их формат, пишет и читает их. | ''DevCPM'' - от слова **M**achine, определяет машинно-зависимые константы, тип процессорной архитектуры. Работает с символьными файлами непосредственно, знает их формат, пишет и читает их. |
Обрабатывает модификаторы в квадратных скобках для процедур, параметров и типов данных. Предопределяет свойства будущего кода. Для модулей компилятора предоставляет сервис отслеживания ошибок и чтения стандартной текстовой модели. | Обрабатывает модификаторы в квадратных скобках для процедур, параметров и типов данных. Предопределяет свойства будущего кода. Для модулей компилятора предоставляет сервис отслеживания ошибок и чтения стандартной текстовой модели. |
| |
===== DevCPP ===== | ===== DevCPP ===== |
DevCPP - от слова **P**arser, парсер модулей. Использует сервис CPS, и по результатам работы вызывает функции CPT и CPB для сохранения результатов. | ''DevCPP'' - от слова **P**arser, //парсер// модулей. Использует сервис ''CPS'', и по результатам работы вызывает функции ''CPT'' и ''CPB'' для сохранения результатов. |
| |
===== DevCPS ===== | ===== DevCPS ===== |
| |
===== DevCPB ===== | ===== DevCPB ===== |
DevCPB - от слов Tree **B**uilder, реализует набор "скриптовых" процедур по работе с модулем CPT, заодно проверяет валидность констант, используется для упрощения генерации AST. | ''DevCPB'' - от слов Tree **B**uilder, реализует набор "скриптовых" процедур по работе с модулем ''CPT'', заодно проверяет //валидность// констант, используется для упрощения генерации **AST**. |
| |
===== DevCPE ===== | ===== DevCPE ===== |
DevCPE - от слова **E**mitter, занимается генерацией кодового файла. | ''DevCPE'' - от слова **E**mitter, занимается генерацией кодового файла. |
| |
===== DevCPH ===== | ===== DevCPH ===== |
| |
===== DevCPV486 ===== | ===== DevCPV486 ===== |
DevCPV486 - от слова Tra**v**erser, обходчик получившегося дерева AST. Выполняет обход и анализ синтаксического дерева. В результате этого генерирует код для конкретной платформы с помощью CPL486 и CPC486. Записывает полученный код в кодовый файл модуля с помощью CPE. Так же есть в вариантах CPV68k. | ''DevCPV486'' - от слова Tra**v**erser, обходчик получившегося дерева **AST**. Выполняет обход и анализ синтаксического дерева. В результате этого генерирует код для конкретной платформы с помощью ''CPL486'' и ''CPC486''. Записывает полученный код в кодовый файл модуля с помощью ''CPE''. Так же есть в вариантах ''CPV68k''. |
| |
===== DevCPC486 ===== | ===== DevCPC486 ===== |
DevCPC486 - от слов **C**ode Generator. Занимается генерацией сложного кода, управляет стеком, регистрами, структурой данных в памяти, работой с FPU, использует сервисы CPL486. Так же есть в вариантах CPC68k. | ''DevCPC486'' - от слов **C**ode Generator. Занимается генерацией сложного кода, управляет стеком, регистрами, структурой данных в памяти, работой с **FPU**, использует сервисы ''CPL486''. Так же есть в вариантах ''CPC68k''. |
| |
===== DevCPL486 ===== | ===== DevCPL486 ===== |
DevCPL486 - от слов **L**ow-level generator, генерирует инструкции процессора. Так же есть в вариантах CPL68k. | ''DevCPL486'' - от слов **L**ow-level generator, генерирует инструкции процессора. Так же есть в вариантах **CPL68k**. |
| |
===== Другое ===== | ===== Другое ===== |
Известны так же модули-декодеры DevDecXXX кода разных платформ, x86, 68k, ARM, PPC, декодер формата Exe. | Известны так же //модули-декодеры// ''DevDecXXX'' кода разных платформ, x86, 68k, ARM, PPC, декодер формата Exe. |
DevTranslator - похоже может перевести C код в код на обероне. | ''DevTranslator'' - похоже может перевести C код в код на обероне. |
DevRemDebug - пошаговый отладчик | ''DevRemDebug'' - пошаговый отладчик ((возможно, удалённый. --- //[[prospero.78.su@gmail.com|Валерий Шипков]] 2016/04/05 20:25//)) |