D3 Reference Manual

Index | Help

Поиск по страницам

Разделы / FlashBASIC / Компиляция и выполнение программ

Компиляция и выполнение программ

Компилятор преобразует исходный код программы на языке Pick/BASIC в список двоичных инструкций, называемых объектным кодом.

Глагол "run" запускает программу-интерпретатор, которая по очереди читает эти инструкции и выполняет необходимые действия. Такой подход с использованием интерпретации обеспечивает быструю трансляцию исходного кода Pick/BASIC, независимость от платформы, компактность объектного кода и достаточное быстродействие.

Если требуется большее быстродействие, компилятор Pick/BASIC может сгенерировать из стандартного объектного кода Pick/BASIC код "FlashBASIC" или "родной" ассемблерный код. Этот код FlashBASIC впоследствии может использоваться в среде D3, как и обычная программа Pick/BASIC, но с той разницей, что код FlashBASIC работает значительно быстрее.

Опция "o", используемая с глаголом "compile" или "basic", вызывает FlashBASIC. По завершении создания "родного" кода он добавляется к стандартному интерпретируемому объектному коду. Поскольку FlashBASIC создает машинно-ориентированный код, при переносе на другие платформы этот код требует перекомпиляции. Кроме того, код FlashBASIC не может вызывать интерпретируемый код и наоборот. Иными словами, если машинная программа скомпилирована с опцией "o", все ее подпрограммы и модули, в которые осуществляется вход (ENTERed modules), также должны быть созданы в формате FlashBASIC.

Опция "w" глагола "compile" позволяет использовать FlashBASIC в прикладных задачах, где отсутствует исходный код (более подробную информацию см. в разделе "compile"). Таким образом, поставщикам прикладного программного обеспечения не приходится поставлять не только исходные коды, но и новые версии объектных кодов. Пользователи, оснащенные компилятором FlashBASIC, могут компилировать имеющиеся прикладные задачи "как есть".

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

Опции компиляции FlashBASIC:

  • b - проверка границ массивов по умолчанию отключена во FlashBASIC (она всегда присутствует в интерпретаторе). Использование опции "b" при компиляции включает эту функцию в код FlashBASIC, увеличивая время компиляции примерно на 20% и снижая скорость обработки массивов.
  • c - убирает символы конца строки (EOL) как во FlashBASIC коде, так и в интерпретируемом коде. Использование этой опции с FlashBASIC сокращает время компиляции на 20% и немного увеличивает скорость выполнения. Как правило, это не позволяет выполнить пошаговую отладку.
  • f - использует арифметику с плавающей точкой.
  • h - по умолчанию компилятор FlashBASIC пытается создать родной код, который может быть совместно использован пользователями. Опция "h" заставляет систему подгружать модуль локально, и обычно используется для модулей, которые будут использоваться только одним или двумя пользователями в любой момент времени.
  • k - данная опция при использовании без опции "h" заставляет общий код оставаться в памяти до выключения машины. Данная опция должна применяться с программами, которые используются большинством пользователей системы. Она значительно уменьшает объем используемой памяти и время загрузки, когда применяется в многопользовательском окружении. См. программу "shpstat" для мониторинга состояния общих программ.
  • o - включает FlashBASIC компиляцию.
  • w - эта опция используется при генерации кода FlashBASIC без исходного текста.
Информация о скомпилированной программе

При компиляции программы в словарь файла, где хранится программа-источник, записывается указатель. Этот указатель содержит краткую внутреннюю информацию об откомпилированное программе FlashBASIC и имеет следующую структуру:

АтрибутОписание
0Ключ записи (item-id)
1CC
2Начальный номер фрейма с объектным кодом
3Счетчик фреймов объектного кода Pick/BASIC
Внутренняя дата последней компиляции
Внутреннее время последней компиляции в секундах
Номер порта того, кто выполнил последнюю компиляцию
Пользователь, выполнивший последнюю компиляцию
8Имя счета, из которого выполнена последняя компиляция
9Версия системы в момент последней компиляции
10Опции, использованные при последней компиляции, в алфавитном порядке
11Байты объектного кода Pick/BASIC
12Счетчик объектных фреймов FlashBASIC