68
12.1. Разпределение на паметта
12. UniPascal в детайли
В тази глава се предоставя информация за реализацията на UniPascal на
микрокомпютъра "Пълдин 601/601А/601М". Тя е предназначена за напреднали
програмисти. Тук ще бъдат разгледани въпроси като разпределение на паметта,
манипулиране с динамичната памет, вътрешното представяне на данните, извикване на
процедури и др.
UniPascal е реализиран чрез така наречения смесен метод на компилация и
интерпретация. Компилаторът от UniPascal е програма, написана на UniPascal и
компилираща от текст на UniPascal до псевдокод (наречен Y код). След компилация този
Y код се интерпретира от интерпретатор. Този метод позволява (при добре подбран
псевдокод) да се генерира сравнително компактен код, за разлика от машинния код.
Основният и най-важен недостатък е по-малката скорост на изпълнение в сравнение с
машинния код, но този недостатък се компенсира от компактността на псевдо-кода,
което е важно за компютри с малък обем оперативна памет.
12.1. Разпределение на паметта
Микропроцесорът СМ 601 (MC6800) е 8-битов с 64 килобайтово адресно
пространство. Компютърът Пълдин 601/601А/601М има 64 килобайта оперативна
памет и възможност за добавяне до 64K ROM (постоянна памет, памет само за четене).
Това означава, че общо паметта на компютъра може да достигне 128 килобайта (за
подробности виж описанието на UniBIOS). Интерпретаторът на Y код се намира в
постоянната памет. Областта с адреси от $0100 до $C000 е на разположение на
потребителя. Това означава, че максималният обем памет, който една програма може
да използва, е 48 килобайта.
Най-общо паметта на компютъра по време на работа на програма на UniPascal
изглежда така:
                BIOS и текстов екран
$F000
          Оперативна памет (системна)
$E000
   8 банки от по 8K ROM всяка и 8K RAM
        (използвани за системни нужди)
$C000
 Памет, използвана от други програми
$ZZZZ
    Памет за динамичните променливи
$RRRR
   Стек на процесора СМ 601 (MC 6800)
SP
                                            
                               свободна памет 
                                           
$PPPP
 иокални променливи на процедурите и 
   глобални променливи на програмата
$YYYY
                 Y код на програмата на UniPascal
$XXXX
                   Резервирано от друга програма
         пространство (.cmd или .pgm)
$0100
                   Нулева страница ($0000..$00FF)
$0000
<<  <  GO  >  >>

Вернуться к началу сайта