:: Статистика ::

 
Індекс цитування

 

 

 

 

 

Непрямо-регістровий режим

У цьому режимі, як і в регістровому, адресне поле не використовується. Значення регістра інтерпретується як адреса операнда. Даний режим використовується для разыменования покажчиків або для звернення до пам'яті за заздалегідь обчисленою адресою.
Деякі процесори, такі, як PDP-11,, VAX, Мсбзохо мають цікаві варіанти цього режиму — адресацію з інкрементом поста і предек-рементом. Інкремент поста означає, що після власне адресації значення регістра збільшується на величину об'єкту, що адресується. Предекремент, відповідно, означає, що регістр зменшується на ту ж величину перед адресацією.
Ці режими можуть використовуватися для всіляких цілей, наприклад для реалізації операцій над текстовими рядками або поелементного сканування масивів. Але одне з основних призначень -- це реалізація стека.

Стік

Стік або магазин — це структура даних, над якою ми можемо здійснювати дві операції: проштовхування (push) значення і виштовхування (pop). Значення виштовхуються із стека в порядку, зворотному тому, в якому проштовхувалися: LIFO (Last In, First Out, перший увійшов, останній вийшов). Стекові структури знаходять широке вживання при синтаксичному розборі арифметичних виразів і алголоподобных мов програмування [Кормен/лейзерсон/рівест 2000].
Найпростіша реалізація стека — це масив і індекс останнього елементу, що знаходиться в стеку (мал. 2.7). Цей індекс називається покажчиком стека (SP - Stack Pointer). Стек може зростати як вгору, так і вниз [(мал. 2.8). Широко застосовуються також реалізації стеків у вигляді односвяз-|ных списків.

Мал. 2.7. Стік на основі масиву

Мал. 2.8. Стеки, зростаючі вгору і вниз

При реалізації стека скалярних значень зручно використовувати безперервну область пам'яті як масив, регістр SP як покажчик і режими адресації з інкрементом поста і предекрементом при реалізації команд проштовхування і виштовхування.
Дійсно, команда

MOVE x, -(SP)

приведе до того, що покажчик стека зменшиться на розмір х, і ми покладемо х в пам'ять, що звільнилася. Навпаки, команда

MOVE (SP)+, біля

приведе до набуття значення і просування покажчика стека у зворотному напрямі. Тому перша команда має також мнемонічне позначення

PUSH х

а друга

POP біля

Якщо ми помістимо декілька значень в стек командою PUSH команда POP виштовхне їх із стека в зворотному порядку. Стек можна використовувати для зберігання проміжних даних (див. приклад 2.3) і при реалізації арифметичних виразів — наприклад, команда

ADD (SP)+, (SP)

у точності відтворює описану вище семантику безадресної команди ADD стекової архітектури. Втім, безадресній команді ADD операнди не потрібні, а в даному випадку вони просто не використовуються, але нікуди не зникають. Команда виходить довше: біля типової стекової архітектури команда складання займає 1 байт, біля PDP-11 її імітація займає 2 байти, а біля VAX — цілих три. Тому, якщо ми хочемо використовувати стекову техніку генерації коди, краще використовувати призначений для цього процесор.

Приклад 2.3. Використання стека для зберігання проміжних значень

void swap(int &a, int &b){
int t;
t=a;
a=b;
b=t;
}

;Для простоти ми не розглядаємо механізм передачі параметрів
; і вважаємо, що вони передаються в регістрах А і В
.GLOBL swap
swap:
POSH (A)
MOVE (B) (A)
POP (B)
RET.

Одне з основних призначень стека в регістровій архітектурі — це збереження адреси повернення підпрограм. Крім того, якщо прийнята в системі угода про виклики підпрограм передбачає, що процедура, що викликається, повинна зберегти все або деякі регістри, які використовує сама, стек зазвичай застосовують і для цього.
Неортогональні процесори, такі, як х86, часто надають спеціальні команди PUSH і POPщо працюють з виділеним регістром SP (Stack Pointer), який не може бути використаний для інших цілей.

 

рекламодавці:

/ ml lfppюн apple store online coupons

::  Меню ::

ГОЛОВНА

Введення

Представлення даних в обчислювальних системах 

Машинні мови

Завантаження програм 

Управління оперативною пам'яттю

Сегментна і сторінкова віртуальна пам'ять

Комп'ютер і зовнішні події

Паралелізм з точки зору програміста 

Реалізація багатозадачності на однопроцесорних комп'ютерах 

Зовнішні пристрої

Драйвери зовнішніх пристроїв 

Файлові системи 

Додаток. Огляд архітектури сучасних ОС

 


:: Навігація ::

Головна

Додати у вишукане  

 

 

 


Copyright © Asentli, 2008