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

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

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


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


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

Регістри-акумулятори універсальні, в них міститься велика частина проміжних результатів виконання різних команд (логічних, арифметичних, введення/виведення тощо). Процесор може містити більше одного акумулятора. Розробники програмного забезпечення використовують акумулятори для скорочення розрядності команд, спрощення програмного коду. Регістри-прапори відомі також як регістри умов. Вони показують певний результат виконання операції, який може бути нульовим, додатним, негативним, або вказувати на переповнення. Зазвичай коди умов об 'єднуються в групи і утворюють регістр іншого типу - керуючий. Змінювати регістри-прапори можливо, але небажано, щоб не спотворити цільний результат. Регістри, що містять індекси на особливі області пам 'яті (стек, базу, команду), називаються регістрами-покажчиками. Найголовніший з них - покажчик стека. Стек - це частина пам 'яті, що складається з комірок, що прямує один за одним, тобто взяти зі стека можна тільки ту комірку, яка лежить зверху. Саме на цю вершину і вказує регістр стека. Вказівник бази зазвичай містить адресу певної комірки стека, яка може бути будь-якою. Як правило, регістр стеку та регістр бази використовують одночасно при роботі в поточній процедурі для зазначення необхідного стану стека. Регістр-покажчик команд іноді називають лічильником команд, він містить покажчики на команди робочого циклу. Коли команда виконується, її значення збільшується на 1 і цикл продовжується з наступної команди. Тобто. лічильник команд завжди вказує на команду, наступну за виконуваною зараз. Індексних регістрів два - це індекс джерела та індекс приймача. Вони використовуються для отримання адреси даних стека в поєднанні з регістрами-покажчиками. Сегментні регістри використовуються при сегментній адресації пам 'яті. При цьому пам 'ять ділиться на блоки (сегменти) різної довжини. Адреса потрібної комірки пам 'яті визначається адресою початку блоку і величиною зсуву відносно нього. Всього сегментних регістрів чотири: для кодового сегмента, сегмента даних, сегмента стека і додаткового сегмента. Регістри керування контролюють роботу процесора і недоступні користувачеві. Їх виконання, в основному, контролюють машинні програми. У них міститься інформація про поточну команду, стан процесора, а також вони локалізують керуючі структури при роботі процесора в захищеному режимі.