ПРИЛОЖЕНИЯ
1. Совместимость компиляторов и интерпретатора Бейсика
В предлагаемой таблице (табл. 5) представлены
ограничения, налагаемые рассматриваемыми компиляторами на синтаксис
операторов и функций Бейсика. Недопустимые инструкции отмечены знаком
минус (-). Если инструкция допустима, но ее употребление имеет
особенности по сравнению с интерпретатором, она отмечена цифрой,
означающей номер примечания.
Таблица 5. Ограждения синтаксиса при использовании компиляторов.
|
*
|
|
iJ
|
■ ------------5
Tftbfr* 1
j
|
Функции Бейсика
|
ABS
|
+
|
+
|
+
|
+
|
+
|
+
|
ACS
|
-
|
-
|
-
|
+
|
+
|
+
|
AND
|
-
|
17
|
-
|
+
|
+
|
+
|
ASN
|
-
|
-
|
-
|
+
|
+
|
+
|
|
ZX СсшуЖ»
|
Me*** г
|
Soltek К
|
Softek : «М Л
|
Softek
|
Tobo*
7н>
|
ATN
|
-
|
-
|
-
|
+
|
+
|
+
|
ATTR
|
+
|
+
|
+
|
+
|
+
|
+
|
BIN
|
+
|
+
|
+
|
+
|
+
|
+
|
CHR$
|
+
|
+
|
+
|
+
|
+
|
+
|
CODE
|
+
|
+
|
+
|
+
|
+
|
+
|
COS
|
-
|
-
|
-
|
+
|
+
|
+
|
EXP
|
-
|
-
|
-
|
+
|
+
|
+
|
FN
|
-
|
-
|
-
|
-
|
-
|
+
|
IN
|
+
|
+
|
+
|
+
|
+
|
+
|
INKEY$
|
1
|
+
|
+
|
+
|
+
|
+
|
INT
|
2
|
2
|
-
|
+
|
+
|
+
|
LEN
|
-
|
+
|
+
|
+
|
+
|
+
|
LN
|
-
|
-
|
-
|
+
|
+
|
+
|
NOT
|
-
|
-
|
+
|
+
|
+
|
+
|
OR
|
-
|
-
|
+
|
+
|
+
|
+
|
PEEK
|
+
|
+
|
+
|
+
|
+
|
+
|
PI
|
-
|
-
|
-
|
+
|
+
|
+
|
POINT
|
+
|
+
|
+
|
+
|
+
|
+
|
RND
|
3
|
3
|
3
|
+
|
+
|
+
|
SCREENS
|
-
|
-
|
+
|
+
|
+
|
+
|
SGN
|
+
|
+
|
+
|
+
|
+
|
+
|
SIN
|
-
|
-
|
-
|
+
|
+
|
+
|
SQR
|
4
|
4
|
-
|
+
|
+
|
+
|
STR$
|
-
|
-
|
+
|
+
|
+
|
+
|
TAN
|
-
|
-
|
-
|
+
|
+
|
+
|
USR addr
|
+
|
+
|
+
|
+
|
+
|
+
|
USR "A"
|
5
|
5
|
5
|
+
|
+
|
+
|
VAL
|
-
|
-
|
-
|
6
|
+
|
+
|
VAL$
|
-
|
-
|
-
|
7
|
7
|
+
|
НттшФ оде*
|
- IX £ooipSer
|
Mc*f*r г
|
Soltek В
|
Softek : НМЛ
|
Softek I loboi
|
Операторы Бейсика
|
AT
|
+
|
+
|
+
|
+
|
+
|
+
|
ВЕЕР
|
18
|
18
|
+
|
+
|
+
|
+
|
BORDER
|
+
|
+
|
+
|
+
|
+
|
+
|
BRIGHT
|
+
|
+
|
+
|
+
|
+
|
+
|
CLEAR
|
+
|
8
|
8
|
+
|
+
|
8
|
CLOSE #
|
-
|
-
|
-
|
+
|
+
|
-
|
CLS
|
+
|
+
|
+
|
+
|
+
|
+
|
CONTINUE
|
-
|
-
|
-
|
-
|
-
|
-
|
COPY
|
+
|
+
|
+
|
+
|
+
|
+
|
DATA
|
+
|
+
|
+
|
+
|
+
|
+
|
DEF FN
|
-
|
-
|
-
|
-
|
-
|
+
|
DIM A()
|
-
|
9
|
-
|
9
|
9
|
+
|
DIM A$()
|
-
|
-
|
-
|
9
|
9
|
+
|
DRAW
|
+
|
+
|
+
|
+
|
+
|
+
|
FLASH
|
+
|
+
|
+
|
+
|
+
|
+
|
FOR...TO...STEP
|
10
|
10
|
+
|
+
|
+
|
+
|
GO SUB
|
11
|
11
|
11
|
11
|
11
|
+
|
GOTO
|
11
|
11
|
11
|
11
|
11
|
+
|
IF...THEN
|
+
|
+
|
+
|
+
|
+
|
+
|
INK
|
+
|
+
|
+
|
+
|
+
|
+
|
INPUT A
|
+
|
+
|
+
|
+
|
+
|
+
|
INPUT A$
|
-
|
+
|
+
|
+
|
+
|
+
|
INPUT LINE
|
-
|
-
|
-
|
6
|
7
|
+
|
INVERSE
|
+
|
+
|
+
|
+
|
+
|
+
|
LET A=
|
+
|
+
|
+
|
+
|
+
|
+
|
LET A$=
|
-
|
+
|
+
|
+
|
+
|
+
|
LIST, LLIST
|
-
|
-
|
-
|
-
|
-
|
12
|
LOAD
|
-
|
-
|
13
|
13
|
13
|
-
|
|
ZX Compter
|
MO** г
|
Softek IS
|
Softek : ** iA :
|
! Softek W4J
|
?«bo* j «►
|
LPRINT
|
+
|
+
|
+
|
+
|
+
|
+
|
MERGE
|
-
|
-
|
-
|
-
|
-
|
-
|
NEW
|
+
|
+
|
+
|
+
|
+
|
+
|
NEXT
|
+
|
+
|
+
|
+
|
+
|
+
|
OPEN #
|
-
|
-
|
-
|
+
|
+
|
+
|
OUT
|
+
|
+
|
+
|
+
|
+
|
+
|
OVER
|
+
|
+
|
+
|
+
|
+
|
+
|
PAPER
|
+
|
+
|
+
|
+
|
+
|
+
|
PAUSE
|
+
|
+
|
+
|
+
|
+
|
+
|
PLOT
|
+
|
+
|
+
|
+
|
+
|
+
|
PRINT A
|
+
|
+
|
+
|
+
|
+
|
+
|
PRINT A$
|
-
|
+
|
+
|
+
|
+
|
+
|
PRINT #
|
-
|
-
|
+
|
+
|
+
|
+
|
RANDOMIZE
|
-
|
+
|
+
|
+
|
+
|
|
READ
|
+
|
+
|
+
|
+
|
+
|
+
|
REM
|
+
|
+
|
14
|
14
|
14
|
+
|
RESTORE
|
15
|
15
|
+
|
+
|
+
|
+
|
RETURN
|
+
|
+
|
+
|
+
|
+
|
+
|
RUN
|
-
|
-
|
-
|
-
|
-
|
+
|
SAVE
|
-
|
-
|
13
|
13
|
13
|
+
|
STOP
|
16
|
16
|
+
|
+
|
+
|
+
|
TAB
|
+
|
+
|
+
|
+
|
+
|
+
|
TO
|
-
|
-
|
+
|
+
|
+
|
+
|
VERIFY
|
-
|
-
|
13
|
13
|
13
|
-
|
Комментарии к таблице:
• При использовании целочисленных
компиляторов любые дробные параметры в тексте программы диагностируются
как ошибка и вызывают остановку компиляции.
• В среде ZX-Compiler v. 1.0 не поддерживаются символьные переменные
5 Зак. № 192
• Аргументы функций и параметры
операторов в среде ZX Compiler v. 1.0, представляющие собой выражения,
должны заключаться в круглые скобки. Для MCoder 2 это ограничение
распространяется только на операторы PLOT, DRAW и CIRCLE.
• Цифры в таблице обозначают:
1. функция поддерживается только в контексте CODE INKEY$;
2. избыточный оператор;
3. функция возвращает целочисленный результат;
4. дробная часть отбрасывается;
5. результат возвращается в виде числа со знаком в дополнительном коде (см. стр. 109);
6. инструкция компилируется, но приводит к сбою при выполнении программы;
7. компилируется, но работает неправильно;
8. допускается только без параметров;
9. массивы могут быть только одномерными;
10. инструкция STEP не поддерживается;
11. в качестве параметров нельзя использовать выражения и переменные;
12. выводится листинг программы, находящейся в области Бейсика, а не скомпилированной программы;
13. операторы работают только с файлами типа CODE;
14. может использоваться также для ввода операторов, расширяющих стандартный Бейсик;
15. допускается только с параметром;
16. воспринимается как ограничитель текста программы (аналогично END в ряде других языков высокого уровня);
17. может использоваться только в качестве условия в операторе IF...THEN;
18. в параметрах могут использоваться натуральные дроби.
2. Сравнительные характеристики компиляторов
В табл. 6 сведены данные о повышении скорости
работы тест-программ, оттранслированных различными компиляторами, по
сравнению со скоростью их выполнения интерпретатором Бейсика, а также
размеры скомпилированных программ. Для проверки использовались 3
тест-программы: 1 -я и 2-я целочисленные (экранная графика и
целочисленная арифметика), а 3-я использует алгебраические операции с
«плавающей точкой».
Тест 1 Тест 2
10 FOR А=0 ТО 175 20 FOR В=0 ТО 255 30 PLOT В.А
40 NEXT В: NEXT А
10 FOR А=1 ТО 256 20 FOR В=1 ТО 256
30 LET С=(А*В)-(А*В) 40 NEXT В: NEXT А
Тест 3
10 FOR А=0 ТО 255
20 LET B=ABS (ACS (RND))+ASN (RND)—ATN (RND) 30 LET B=ATTR (A,B)+BIN 100111 Ю/CODE "q" 40 LET A$=CHR$ A 50 LET B=COS PI: LET B=SIN PI
60 LET B=TAN PI—EXP PI: LET B=IN
(31)-CODE INKEY$ 70 LET B=INT (2/3): LET B=LEN A$ 80 LET B=LN PI+PEEK
23681-POINT (128,88) 90 LET A$=SCREEN$ (10,10)
100 LET B=SGN (RND)+SIN (RND)*SQR (ABS (RND))/TAN (RND)
110 LET A$=STR$ 12345
120 LET B=USR 7962+USR "a"
130 NEXT A
140 BEEP 0.1,0.1
Таблица 6. Сравнение эффективности компиляторов.
Тест
|
Бейсик:
|
ZX Сorcpter
|
MCoder *]$eftefclS
|
Softek FP
|
rOtOSH**
|
f Л
|
ij
|
|
|
Степень ускорения (по сравнению с Spectrum-Бейсиком), крат
|
1
|
1
|
16
|
16
|
35
|
3.7
|
3.7
|
6.2
|
6.6
|
2
|
1
|
17
|
28
|
18
|
3.1
|
3.1
|
7.0
|
7.5
|
3
|
1
|
-
|
-
|
-
|
1.1
|
1.1
|
19
|
19
|
Длина программы с переменными {без учета компилятора), байт
|
1
|
108
|
115
|
134
|
142
|
92
|
109
|
145
|
126
|
2
|
145
|
154
|
171
|
189
|
166
|
166
|
171
|
148
|
3
|
379
|
-
|
-
|
-
|
409
|
409
|
416
|
354
|
• Режим 1 компиляции Tobos FP включается оператором РОКЕ 53252,0; режим 2 — РОКЕ 53252,55 (подробнее см. стр. 119).