Комп’ютерна Енциклопедія

Архітектура ЕОМ

Компоненти комп'ютера

Інтерфейси

Найбільш читане

комп

Для вибірки операнда необхідно додаткове звернення до ОЗУ.

Операнд знаходиться в одному з регістрів процесора. sub bx, si; віднімаються два операнда, що у регістрах процесора (див. малюнок нижче).

комп

ютерна

комп

Стековий доступ до пам'яті

Стековий доступ до пам'яті відбувається в більшості процесорів у таких ситуаціях: 1) При виконанні команд стекового доступу: "помістити в стек" pushабо "витягти з стека" pop. 2) При виконанні команди виклику підпрограми та при поверненні з неї. 3) При вході в переривання та при поверненні з переривання.

енциклопедія

ютерна

Стекова архітектура

Стеком називається пам'ять, що складається із взаємозалежних осередків, що взаємодіють за принципом "останнім увійшов - першим вийшов" (LIFO, Last In First Out).

Верхню комірку називають вершиною стека. Для роботи зі стеком передбачені дві операції: рush (проштовхування даних у стек) та рор (виштовхування даних зі стека). Запис можливий тільки у верхню комірку стека, при цьому вся інформація, що зберігається в стеку, попередньо проштовхується на одну позицію вниз. Читання допустиме також лише з вершини стека. Вилучена інформація видаляється зі стека, а його вміст, що залишився, просувається вгору. У обчислювальних машинах, де реалізована АСК на базі стека (їх зазвичай називають стековими), операнди перед обробкою поміщаються у дві верхні комірки стекової пам'яті. Результат операції заноситься у стек.

При описі обчислень з використанням стека зазвичай використовується інша форма запису математичних виразів, відома як зворотний польський запис (зворотний польський нотація), який запропонував польськийматематик Я. Лукашевич. Особливість її в тому, що у виразі відсутні дужки, а знак операції розташовується не між операндами, а слідує за ними (постфіксна форма). Послідовність операцій визначається їх пріоритетами. Вираз а = а + b + а х з постфіксної формі буде записано у вигляді: а = а b + а с х +.

АСК на основі стеку довгий час вважався неперспективним. Однак останнім часом відроджується інтерес до стекової архітектури ВМ. Це пов'язано з популярністю мови Java та розширенням сфери застосування мови Forth, семантиці яких найбільш близька саме стікова архітектура.

Команди пересилання

Пересилання загального призначення

Пересилання з/в стек

Пересилання двійкових слів

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

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

Перевірка умов, прапори та набір команд розгалуження

Порівняння в ЕОМ використовується для організації подальшого розгалуження алгоритму (умовного переходу до програми) залежно від результату порівняння. Порівняння можна проводити за умовами:

  • а) одно/нерівно;
  • б) більше/менше.

Умова а) завжди осмислено і формально означає, що це біти порівнюваних операндів однакові. Семантика умови б) зрозуміла для даних, які певним чином упорядковані, таких як числа або символи алфавіту. Для такого виду даних, як бітові поля, не завжди зрозуміло, що таке "більше/менше".

Порівняння у процесорі відбувається за однією з двох схем:

  1. Порівняння операнда з нулем (його можна зробити спеціальною командою "перевірка ": у системі команд х86 - командаtest a, b ).
  2. Порівняння двох операндів між собою (відніманням і подальшим порівнянням результату з нулем)

Для порівняння двох чисел можна використовувати команди віднімання. Крім того, зазвичай у системі команд є спеціальні команди для порівняння. У i * 86 це командаcmp a, b - вона робить відніманняa - b, за результатом операції модифікуються всі 4 основних прапори -cf, of, zf, sf, після чого результат віднімання втрачається, а операнди зберігаються незмінними.

Для порівняння з нулем є спеціальні команди "перевірити операнд " (в i * 86 - командаtest a, b ), а, крім того, - прапориzf таsf можуть встановлюватися при виконанні інших команд (таких, як завантаження та пересилання).

Після виконання команди, яка здійснює порівняння (і встановлює прапори), треба здійснити розгалуження. Для цього в процесорі зазвичай існує велика група команд умовного розгалуження, яке відбувається (або ні) в залежності від станів тих чи інших прапорів. У групі команд розгалуження можна назвати три підгрупи (Таблиця 1, Таблиця 2, Таблиця 3).

команд

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

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

Кодування двооперандної команди

У цій складній структурі КОП може займати один або два байти. Адресна частина команди може або взагалі бути відсутнім, або включати до свого складу від одного (ModR/M) до 12 байтів.

Адресна інформація, закодована в такій складній команді, може містити такі відомості:

Довжина префіксу 1 байт. Є всього 5 префіксів для Х86

ютерна

Код операції

Поляmod іr/m задають місце розташування першого операнда. Полеreg задає положення другого операнда.

Значення поляmod :

Довжина 1 байт (при mod-01) або 2 байта (при mod = 10).

Безпосередній операнд

Довжина 1 або 2 байти.

У 32-х розрядних процесорах для кодування розширених регістрів з'явився у форматі після постбайту SIB-байт. Байт SIB включає наступні поля:

  • Поле ss, яке займає 2 старші біти байти, визначає масштабний коефіцієнт.
  • Полеindex, яке займає наступні 3 біти за полем ss, задає для індексного регістра номер регістра.
  • Полеbase, яке займає молодші три біти байти, задає номер базового регістру.