Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Спеціалізоване використання регістрів-вказівників.



Регістри-вказівники використовуються процесором під час виконання команд непрямої адресації (зокрема базово-індексної). При цьому для зберігання адреси бази використовується регістр bp ( basic pointer – вказівник на базу). З такою самою метою може використовуватись регістр bx, про що було сказано у попередньому питанні.

Регістр sp (stack pointer – вказівник стеку) використовується для зберігання адреси вершини стеку. І тому він неявним чином використовується в командах читання/запису даних зі стеку PUSH і POP. Тут для визначення адреси використовується пара ss : sp, де перший регістр задає адресу сегмента, а другий – зміщення.

Регістри si (source index – індекс джерела) та di (destination index – індекс приймача) використовуються для зберігання зміщення відносно бази (регістрів bx та bp) в командах непрямої адресації. Але іншим їх використанням є команди роботи з рядками. В такому випадку перший регістр зберігає адресу рядка-джерела, а другий: рядка-приймача (наприклад при копіюванні інформації з одного рядка в інший). Цим і пояснюється назва таких регістрів.

Треба зазначити, що регістри-вказівники також можуть бути використані довільним чином для зберігання даних, що і роблять багато програмістів, коли чотирьох регістрів даних не вистачає для зберігання усіх змінних. Але при використанні таких регістрів слід пам’ятати, що при виклику певних команд (особливо для роботи з пам’яттю) їхнє значення може бути невірно сприйняте транслятором і програма буде виконуватись некоректно. Тому в таких випадках дані програми слід записувати у стек, а для їх обробки використовувати лише ті регістри, які не використовуються неявним чином у командах програми.

Студент повинен

знати :

v Види регістрів загального призначення.

v Призначення регістра даних.

v Призначення регістра вказівників.

v Види службових регістрів та їх призначення.

вміти :

v Використовувати регістри загального призначення процесора Intel 8086 в деяких командах Ассемблера.

Питання для самоконтролю

1. Перелічіть види регістрів загального призначення.

2. Назвіть призначення регістра даних.

3. Назвіть призначення регістра вказівників.

4. Назвіть види службових регістрів та їх призначення

 Література

www.wikipedia.org

http://www.znannya.org


3.2. Способи адресації пам’яті у процесорах Intel 8086


Питання для опрацювання

1. Регістрова адресація.

2. Безпосередня адресація.

3. Пряма адресація.

4. Непряма адресація та її різновиди.

 Методичні рекомендації

Під час виввчення даної теми студенти мають повторити матеріал з дисципліни «Архітек тура комп’ютерів», який стосується особливостей використання різних способів адресації .

Регістрова адресація.

Регі́строва адреса́ція — метод адресації пам'яті, в якому всі операнди знаходяться в регістрах процесора.

+------+-----+-----+-----+ | MUL | R1 | R2 | R3 | R1 := R2 * R3; +------+-----+-----+-----+

В зв'язку з тим, що в цьому методі не відбувається фактичного обчислення ефективної адреси, деякі архітектури системи команд не вважають його повноцінним методом адресації.

Спо́соби адреса́ції перехо́дів — комплекс визначених для даної архітектури системи команд способів обчислення ефективної адреси команди, на яку передається керування в результаті виконання команди переходу.

Адреса, на яку передається управління, повинна бути зазначеною в команді переходу або обчислена на підставі інформації, що міститься в ній. Таким чином, як і для звичайних обчислювальних команд, знову постає необхідність розгляду методів адресації.

В сучасних архітектурах можна виділити три загальноприйнятих методи адресації переходів:

· регістрова адресація (з різними модифікаціями) — ефективна адреса переходу міститься в регістрі, визначеному в команді

· адресація відносно лічильника команд — зсув знаходиться в полі команди й складається з поточним значенням лічильника команд для отримання ефективної адреси.

· абсолютна адресація — ефективна адреса знаходиться безпосередньо в полі команди

Адресація відносно лічильника команд із зазначенням зсуву в полі команди в певному розумінні є ефективнішою абсолютної адресації з повною заміною значення лічильника адресою, зазначеною в команді. По-перше тому, що в останньому випадку доводиться використовувати дуже великі константи для того, щоби дістатись віддалених ділянок адресного простору, а по-друге тому, що передача керування рідко коли передається занадто далеко. Тому, як правило, команди умовного переходу в сучасних процесорах використовують саме цей метод адресації.

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

Необхідність в динамічному визначенні адреси переходу часто виникає в мовах високого рівня у зв'язку із застосуваннямвіртуальних функцій (адреси точок входу яких можуть бути різними залежно від типів операндів), вказівників на функцію як аргументів іншої функції, а також при використанні динамічно-підключуваних бібліотек.

Безпосередня адресація.

Безпосере́дня адреса́ція — метод адресації пам'яті, де один з операндів знаходиться в регістрі процесора, а інший єконстантою, значення якої зберігається безпосередньо у відповідному полі машинної команди.

+------+-----+-----+----------------+ | ADD | R1 | R2 | константа | R1 := R2 + константа; +------+-----+-----+----------------+

На малюнку показаний типовий формат триадресної команди для реалізації безпосередньої адресації (типовий для RISC-архітектур). Для CISC-архітектур регістри R1 та R2 зазвичай збігаються.

В цьому методі адресації обчислення ефективної адреси не виконується взагалі, і в деяких архітектурах системи команд він взагалі не вважається методом адресації.

Розрядність константи та, відповідно, діапазон значень, залежать від конкретної архітектури. Наприклад, для архітектури DEC VAX, розрядність такої константи могла становити 6, 8, 16, або 32 біт. В RISC-архітектурах, як правило, розрядність константи є фіксованою і не може змінюватись.

Пряма адресація.

АБСОЛЮТНА (ПРЯМА) АДРЕСАЦІЯ пам'яті — метод адресації пам'яті, в якому ефективна адреса операнда записується безпосередньо в команді

, +---------+---------+-----------------------------------+ | ADD | R1 |      адреса операнда    | R1:=R1+MEM[адреса операнда] +---------+---------+-----------------------------------+

Для великої розрядності пам'яті це потребує досить великого поля команди. Тому в CISC-машинах, де допускається змінна довжина команди, цей метод адресації реалізований як правило безпосередньо, а в деяких RISC-машинах, де довжина поля адреси обмежена, вона завантажується частинами в один з вільних регістрів, а потім використовується регістрова адресація(яка в свою чергу в RISC-машинах реалізується на базі адресації за зсувом з нульовим значенням зсуву).

Абсолютною адресацією також називають спосіб знаходження наступної команди в командах переходу (наприклад, безумовного переходу), коли ефективна адреса наступної команди міститься повністю у відповідному полі команди переходу, або міститься там частково та обчислюється за встановленими правилами.

+----+------------------------------+ |JUMP| 28-бітна адреса     |   +----+------------------------------+

Наприклад, в багатьох 32-бітних RISC-архітектурах, ефективна адреса наступної команди обчислюється як об'єднання чотирьох старших біт з лічильника команд та 28 біт молодших біт, які містяться в команді переходу. Це дозволяє переходити на будь-яку команду в межах 256-мегабайтного діапазону.


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 294; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.019 с.)
Главная | Случайная страница | Обратная связь