Для чого потрібні регістри

Для чого потрібні регістри

Регістри процесора — це осередки надшвидкої оперативної пам’яті, які призначені для тимчасового зберігання проміжних даних. Різні регістри містять інформацію у різному вигляді: адреси і покажчики сегментів пам’яті або системних таблиць, індекси елементів масиву і пр.

Інструкція

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

Будь регістр процесора — це цифрова електронна схема, що містить послідовність двійкових чисел різної розрядності (16, 32 або 64) і результати виконання перетворень між ними. За типом прийому та передачі інформації можуть бути послідовними (зсувними) і паралельними.

Регістри-акумулятори універсальні, в них міститься велика частина проміжних результатів виконання різних команд (логічних, арифметичних, введення / виведення та ін.) Процесор може містити більше одного акумулятора. Розробники програмного забезпечення використовують акумулятори для скорочення розрядності команд, спрощення програмного коду.

Регістри-прапори відомі також як регістри умов. Вони показують певний результат виконання операції, який може бути нульовим, позитивним, негативним, або вказувати на переповнення. Зазвичай коди умов об’єднуються в групи і утворюють регістр іншого типу — керуючий. Міняти регістри-прапори можливо, але небажано, щоб не спотворити цілісний результат.

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

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

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

Індексних регістрів два — це індекс джерела і індекс приймача. Вони використовуються для отримання адреси даних стека в поєднанні з регістрами-покажчиками.

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

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