|
Пример работы компилятора "КОМПАС"
Текст программы |
1 | PROGRAM TypConst; |
2 | CONST n=4; |
3 | t:INTEGER=5; |
4 | VAR w:INTEGER; |
5 | BEGIN w:=t-n; t:=w+1; |
6 | WRITELN(t); |
7 | END. |
Карта памяти |
0000 - 0007 | инициализация |
0008 - 0009 | типизир. константы |
000A - 000A | BEGIN |
000A - 0013 | W:= ... |
0014 - 001D | T:= ... |
001E - 002D | WRITELN( ) |
002E - 002F | END. |
0030 - 00DD | СВОБОДНАЯ ПАМЯТЬ |
00DE - 00DF | переменные |
00E0 - 00FF | рабочая область |
Наличие ошибок:
УСПЕШНОЕ ЗАВЕРШЕНИЕ КОМПИЛЯЦИИ
коды | адреса | комментарии |
0E6D | 0000 |
установка указателя стека |
0100 | 0002 |
1C0D | 0004 |
к основной программе |
000A | 0006 |
0005 | 0008 |
переменная T |
01E1 | 000A
| W:=... |
0008 | 000C |
2341 | 000E |
- |
011E | 0010 |
запись результата |
00DE | 0012 |
01E1 | 0014
| T:=... |
00DE | 0016 |
2211 | 0018 |
+ |
011E | 001A |
запись результата |
0008 | 001C |
01E1 | 001E |
WRITELN ... |
0008 | 0020 |
01D3 | 0022 |
задать адрес буфера |
00E0 | 0024 |
9C0D | 0026 |
вывод значения переменной |
4068 | 0028 |
(тип INTEGER) |
9C0D | 002A |
перевод строки (LN) |
40EC | 002C |
CF98 | 002E |
СТОП |
.... | .... |
| 00DE |
переменная W |
| 00E0 |
буфер вывода (6 байт) |
.... | .... |
| 00E6 |
стек (до 0100) |
.... | .... |
|