Інтерпретатор muLisp, Детальна інформація

Інтерпретатор muLisp
Тип документу: Реферат
Сторінок: 5
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 13.9
Скачувань: 1004
$ (SETQ A (cons X Y)) $ (CAR A) $ (CDR A) $ (CDR ‘(R . S))

$ A X Y S

(X . Y)

За допомогою точкового подання можна показати структуру будь-якого об’єкту. Список (x1 x2 x3) є ланцюгом консів, які зв’язані за допомогою CDR- елементів. Його CAR- елементи вказують на елементи списку. CDR- елемент останнього конса вказує на NIL. Вказаний список можна подати у вигляді (x1 . (x2 . (x3 . NIL))). Функція READ читання виразу розпізнає як точкове подання виразу, так і спискове. Функція виведення PRINT виводить об’єкти в списковому поданні.

$ (SETQ a ‘(q . (w . nil)) $ a $ (CONSP ‘(q . w)) $ (CONSP (q w))

(q w) (q w) T T

Функція (CONSP obj) розпізнає конси. Список не є примітивним об’єктом, а є ланцюгом консів. Отже, результатом застосування функції CONSP до списку буде Т.

2. Керування пам’яттю

Динамічне автоматичне керування пам’яттю надає велику кількість переваг інтерпретатору muLisp. Немає необхідності власноручно програмісту розподіляти пам’ять під задачу, яка буде виконуватися. Пам’ять, яка не буде використовуватися програмою, доступна для створення нових структур даних.

При ініціалізації muLisp обчислюється розмір доступної пам’яті, яка потім розбивається на 4 області:

– область атомів (64К), яка забезпечує пам’ять для 4 елементів-вказівників, необхідних для кожного символа та числа.

– область векторів (128К), яка забезпечує пам’ять для кожного тіла PRINT-імені символа (64К) та числового двійкового вектора кожного числа (64К).

– область вказівників (256К), яка забезпечує пам’ять під 2 елементи-вказівники, необхідні для кожного cons-а та під D-код, необхідний для визначення функції. Оскільки cons є основною структурою даних Ліспу, область вказівників є найбільшою серед інших.

– область стеку (64К), яка забезпечує пам’ять для контрольного стеку та змінного стеку. Ці два стеки розташовані на протилежних кінцях області стеків.

Таким чином для роботи інтерпретатора muLisp необхідно 512К плюс пам’ять під DOS.

3. Збір сміття

MuLisp має алгоритм збору сміття з двома переглядами (помітка та чистка). Під час першого перегляду пам’яті помічаються усі активні об’єкти даних, доступ до яких забезпечується внаслідок зчеплення за допомогою елементів-вказівників, починаючи з елементів списку значень та властивостей усіх символів системи, або зі стеку змінних, або D-коду. Символи з автоматичним посиланням, які не мають властивостей та поточних визначень функцій, не помічаються. Такі символи автоматично видаляються зі списку під час другого перегляду.

У процесі другого перегляду збору сміття усі помічені об’єкти даних ущільнюються та збираються в одному з кінців відповідної області даних. Це дозволяє зберегти залишки областей даних для створення нових об’єктів.

3.4. Перерозподіл областей даних

:

<

h

j

3/4

O

U

ae

e

e

i

The online video editor trusted by teams to make professional video in minutes