АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Регістри

Читайте также:
  1. Мал. 8.3 - Основні регістри процесора Pentium II
  2. Облікові регістри, їх класифікація та значення в бухгалтерському обліку
  3. Регістри

У всіх комп'ютерах є декілька регістрів, які видно на рівні команд. Вони потрібні там для того, щоб контролювати виконання програми, зберігати часові результати, а також для деяких інших цілей. Звичайно регістри, які видно на мікроархітектурному рівні, наприклад TOS і MAR, не видно на рівні команд. Проте деякі з них, наприклад лічильник команд і покажчик стека, присутні на обох рівнях. Регістри, які видно на рівні команд, завжди видно на мікроархітектурному рівні, оскільки саме там вони реалізуються.

Регістри рівня команд можна розділити на дві категорії: спеціальні регістри і регістри загального призначення. Спеціальні регістри включають лічильник команд і покажчик стека, а також інші регістри з особливою функцією. Регістри загального призначення містять ключові локальні змінні і проміжні результати обчислень. Їх основна функція полягає в тому, щоб забезпечити швидкий доступ до часто використовуваних даних (звичайно уникаючи звернень до пам’яті). Машини RISC з високошвидкісними процесорами і повільній (відносно повільній) пам’яті звичайно містять як мінімум 32 регістри загального призначення, а в нових процесорах кількість цих регістрів постійно росте.

У деяких машинах регістри загального призначення повністю симетричні і взаємозамінні. Якщо всі регістри еквівалентні, для зберігання часового результату компілятор може використовувати і регістр R1, і регістр R25. Вибір регістра не має ніякого значення.

У інших машинах деякі регістри загального призначення можуть бути спеціалізовані. Наприклад, в процесорі Pentium II існує регістр EDX, який може використовуватися як регістр загального призначення, але який також одержує половину результату множення і містить половину діленого при ділені.

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

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

Є один регістр управління, який є привілейовано-користувацький гібрид. Це регістр прапора, або PSW (Program State Word — слово стану програми. Цей регістр містить різні біти, які потрібні центральному процесору. Найважливіші біти — це коди умови. Вони встановлюються в кожному циклі АЛУ і відображають стан результату попередньої операції. Біти коду умови включають:

· N — встановлюється, якщо результат був негативним (Negative);

· Z — встановлюється, якщо результат був рівний 0 (Zero);

· V — встановлюється, якщо результат викликав переповнювання (oVerflow);

· С — встановлюється, якщо результат викликав вихід перенесення найлівішого біта (Carry out);

· А — встановлюється, якщо відбувся вихід перенесення бита 3 (Auxiliary carry — службове перенесення);

· Р — встановлюється, якщо результат парний (Parity).

Коди умови дуже важливі, оскільки вони використовуються при порівняннях і умовних переходах. Наприклад, команда СMР звичайно віднімає один операнд з іншого і встановлює коди умови на основі одержаної різниці. Якщо операнди рівні, то різниця буде рівна 0 і в регістрі прапора буде встановлено біт Z. Подальша команда BEQ (Branch Equal - перехід у разі рівності) перевіряє біт Z і здійснює перехід, якщо він встановлений.

Регістр прапора містить не тільки коди умови. Його вміст змінюється від машини до машини. Додаткові поля вказують режим машини (наприклад, призначений для користувача або привілейований), трасовий біт (який використовується для відладки), рівень пріоритету процесора, а також статус дозволу переривань. Регістр прапора звичайно можна вважати в користувацькому режимі, але деякі поля можуть записуватися тільки в привілейованому режимі (наприклад, біт, який указує режим).

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)