КОМПИЛЯТОРЫ SPECTRUM-БЕЙСИКА
В начале книги, помимо интерпретации,
упоминался еще один способ перевода программ с языков высокого уровня
на язык кодов процессора — компиляция. Главное преимущество этого
способа — увеличение быстродействия программ.
ZX Spectrum может порадовать программистов тем,
что для него создано множество различных компиляторов Бейсика, от самых
простых целочисленных, не «переваривающих» дробные числа и
понимающих лишь ограниченный набор ключевых слов, до мощных, которые,
кроме поддержки почти всех операторов базового интерпретатора,
реализуют еще и некоторые дополнительные инструкции.
Но, к сожалению, компиляторы Spectrum-Бейсика
не удовлетворяют всем требованиям, предъявляемым к подобного типа
программам. Например, ни один из них не поддерживает полный набор
инструкций интерпретатора. Кроме того, (и это, пожалуй, самое
неприятное) оттранслированная программа не работает без присутствия в
памяти компьютера самого компилятора. Дело в том, что любой компилятор
содержит так называемые библиотеки системных процедур — набор
подпрограмм в машинных кодах. Компиляторы, реализованные на компьютерах
более высокого класса, как правило, вставляют в оттранслированный текст
лишь те системные процедуры, которые нужны именно в данной программе.
Авторы же компиляторов Spectrum-Бейсика решили не усложнять себе
задачу, и в результате написанные ими продукты «навешивают»
на оттранслированную программу все, без выбора, системные процедуры, а
заодно и саму процедуру компиляции. А от такого упрощения — лишь
дополнительный расход памяти.
Теперь коротко о том, какие компиляторы и
почему будут описаны в этой главе. Мы решили ограничиться программами с
безупречной репутацией. Именно поэтому в книгу не включено описание
пакета Toolkit/Blast, склонного (в том виде, в каком он дошел до нашего
Отечества) к непредсказуемому поведению, не соответствующему его
блестящей аттестации в фирменном описании. Еще мы старались отобрать
достаточно непохожие друг на друга компиляторы, занимающие свою
Собственную «экологическую нишу». Так, целочисленный
ZX-Compiler v. 1.0 — самый простой и наименее совместимый по
синтаксису с интерпретатором, но он же и самый короткий. MCoder 2
занимает в памяти почти в два раза больше места, но, в отличие от
ZX-Compiler, понимает, что такое числовые массивы. Softek IS массивы не
«переваривает», но поддерживает несколько новых инструкций,
неведомых интерпретатору. Softek FP является простейшим из
компиляторов, умеющим правильно делить один на два, a Tobos FP наиболее
близок по синтаксису к интерпретатору (список ограничений минимален),
но считает дробные числа с точностью не до восьми, а лишь до семи
значащих цифр. Так что имеет смысл познакомиться с каждым из
перечисленных компиляторов, чтобы в конкретном случае найти оптимальный
компромисс между скоростью работы скомпилированной программы и ее
возможностями.
И все же, несмотря на различия, описанные в
книге комниляторы имеют немало общих черт. Но текст описаний не выиграл
бы от многочисленных перекрестных ссылок от одного компилятора на
другой. Поэтому мы старались (а удалось ли — судить читателю)
найти золотую середину между требованием автономности каждого описания
и стремлением не повторяться.
Несколько слов о структуре этой главы. Сначала
будут рассмотрены три целочисленных компилятора, а затем еще два,
поддерживающие работу с дробными числами. Специальный раздел посвящен
записи готового программного продукта на магнитный носитель. Справочный
материал, касающийся совместимости синтаксиса компиляторов и
интерпретатора, приведен в Приложении 1. Основные
«тактико-технические» характеристики рассматриваемых
компиляторов содержит Приложение 2.
Разные компиляторы могут иметь одинаковые или
похожие названия, и, наоборот, одна и та же программа может встречаться
под разными именами. Поэтому при рассмотрении очередного компилятора
будут
^тдто'
оговариваться его отличительные особенности, а
также, по возможности, перечисляться различные имена, под которыми он
встречается.
Компилятор диалекта Laser-Basic рассмотрен в
соответствующей главе. Впрочем, он может применяться и для компиляции
обычных бейсик-программ.
Последнее замечание адресовано владельцам
дисковой операционной системы TR-DOS. Все рассматриваемые компиляторы
не поддерживают инструкции обращения к дисководу. Существующие
«дисковые» версии компиляторов умеют лишь загружаться с
диска.