НАР 2 - NAR 2

НАР 2 (сербский NaСтавни рачунар 2, en. Образовательный компьютер 2) представляет собой теоретическую модель 32-кусочек слово компьютер, созданный на математическом факультете Белградский университет профессор Неделько Парезанович в качестве усовершенствования своего предшественника, НАР 1. Он использовался для язык ассемблера и Компьютерная архитектура курсы. Слово «нар» означает Гранатовый в сербский. Создано много тренажеров NAR 2 - например, один получил название «Šljiva» (en. слива ) поскольку этот фрукт растет в Сербия, а "нар" - нет.

Структура инструкции

НАР 2 процессор использует 32-битные машинные слова. Каждый Машина инструкция содержит:

  • код операции в 8 старшие биты (биты с 24 по 31)
  • 4 бита (от 20 до 23), определяющие Индексный регистр для использования с индексированными режимами адресации
  • 4 бита (от 16 до 19), содержащие адресный режим флаги:
    • бит 19: п (SR. посредно, en. опосредованный) - проиндексировано
    • бит 18: р (SR. рэлативно) - относительно счетчика программ
    • бит 17: я (SR. яндиректно) - многоуровневая косвенная память (примечание: адрес загружается из указанного места и, если он также содержит флаг "I", вычисление косвенного адреса продолжается)
    • бит 16: N (SR. Nэпосредно) - немедленно
  • 16 бит подписанный значение параметра

Регистры

NAR 2 имеет четыре регистра:

Мнемоника

Доступны следующие коды операций (фактические коды не указаны, только мнемоника):

Доступ к памяти / регистру

  • MUA (SR. MEmorija U Акумулятор, en. Memory Into Accumulator) загружает значение в аккумулятор
  • АУМ (SR. Акумулятор U MEmoriju, en. Accumulator Into Memory) хранит содержимое аккумулятора.
  • PIR (SR. пUnjenje яндексног рegistra, en. Загрузить индексный регистр) Загружает значение в индексный регистр.

Целочисленная арифметика

Примечание: все мнемонические символы в этой группе оканчиваются буквой «F», обозначающей «Фиксни зарез» (en. С фиксированной точкой) арифметика. Однако это верно только для сложения, вычитания и отрицания (смены знака). Умножение и деление предполагают, что «точка» закреплена справа от младшего разряда, то есть числа являются целыми.

  • SABF (SR. Сабэри ты Fиксном зарезу, en. Add, Fixed Point) - добавляет параметр в аккумулятор
  • ODUF (SR. Одуzmi u Fиксном зарезу, en. Subtract, Fixed Point) - вычитает параметр из аккумулятора
  • MNOF (SR. Množi u Fиксном зарезу, en. Multiply, Fixed Point) - умножает аккумулятор на параметр
  • DELF (SR. Delя ты Fиксном зарезу, en. Divide, Fixed Point) - делит аккумулятор на параметр
  • PZAF (SR. пРомени Zнак Аkumulatora u Fиксном зарезу, en. Change the Sign of Accumuator, Fixed Point) - Изменяет (переворачивает) знак аккумулятора

Арифметика с плавающей запятой

  • САБ (SR. СабЭри, en. Добавить) - добавляет параметр в аккумулятор
  • ODU (SR. Одуzmi, en. Subtract) - вычитает параметр из аккумулятора
  • MNO (SR. Množi, en. Multiply) - умножает аккумулятор на параметр
  • DEL (SR. Delя, en. Divide) - делит аккумулятор на параметр
  • PZA (SR. пРомени Zнак Акумулатора, en. Change the Sign of Accumuator) - Изменяет (переворачивает) знак аккумулятора

Побитовый / логический

Примечание: все вышеуказанные операции побитовый. Их имена подразумевают, что они чисто логические операции но их можно объяснить, как если бы они работали с векторами битов и отдельно применяли логические операции к каждой паре битов.

Логические сдвиги

  • POL (SR. ПоМери Levo, en. Shift Left) - сдвигает биты аккумулятора влево
  • POD (SR. ПоМери Desno, en. Shift Right) - сдвигает биты аккумулятора вправо

Управление потоком

  • РЭШ (SR. Neгативни Sкок, en. Отрицательный прыжок) выполняет условный переход на адрес, указанный параметром, если текущее значение аккумулятора отрицательное
  • BES (SR. БытьZuslovni Sкок, en. Безусловный прыжок) выполняет безусловный прыжок по адресу, указанному параметром
  • NUS (SR. Nuля-Sкок, en. Zero Jump) выполняет условный переход по адресу, указанному в параметре, если текущее значение аккумулятора равно нулю
  • ZAR (SR. Zaустави рачунар, en. Stop the Computer) останавливает дальнейшую обработку; это единственная инструкция, которая игнорирует параметр.

Стандартный синтаксис языка ассемблера

Синтаксис языка ассемблера NAR 2 был разработан, чтобы быть простым и легким для анализа. Каждая программная строка может содержать до одной инструкции, указанной следующим образом:

  1. Мнемоника инструкций
  2. Пробел, если инструкция указывает какие-либо индексные регистры, режим адресации или параметр, а затем через запятую:
    1. Имя индексного регистра, если используется
    2. Имена флагов режима адресации (также через запятую)
    3. Значение параметра

Образец кода:

  аум Х1, п, 0 муа п, 1 аум 15  пир Х1, п, п, 1 муа Х1, п, п, 0 одуф п, 1 одуф Х2, п, п, 0

Режимы адресации

С четырьмя битами выбора режима адресации (P, R, I и N - индексированные, относительные, косвенные и немедленные) инструкции NAR 2 могут определять 16 различных режимов адресации, но не все имеют смысл во всех инструкциях. В следующей таблице:

  • M [x] указывает 32-битное значение (содержимое) ячейки памяти x
  • BN указывает счетчик программы
  • p указывает 16-битный подписанный параметр в местоположении
  • Xi указывает регистр индекса, выбранный данными в местоположении
  • f () - функция «эффективного значения», используемая для косвенной адресации (см. подробности ниже):
Адрес флагиТип инструкции
пряNДанныеПрыгать
 -  -  -  - M [p]п
 -  -  - Nпп
 -  - я - M [f (M [p])]f (M [p])
 -  - яNf (M [p])f (M [p])
 - р -  - M [BN + p]BN + p
 - р - NBN + pBN + p
 - ря - M [f (M [BN + p])]f (M [BN + p])
 - ряNf (M [BN + p])f (M [BN + p])
п -  -  - M [Xi + p]Xi + p
п -  - NXi + pXi + p
п - я - M [f (M [Xi + p])]f (M [Xi + p])
п - яNf (M [Xi + p])f (M [Xi + p])
пр -  - M [BN + Xi + p]BN + Xi + p
пр - NBN + Xi + pBN + Xi + p
пря - M [f (M [BN + Xi + p])]f (M [BN + Xi + p])
пряNf (M [BN + Xi + p])f (M [BN + Xi + p])

Примечание 1. Флаг «N» (немедленный) не влияет на инструкции перехода (управления потоком), поскольку процессор не может перейти к указанному значению, а только к адресу памяти.

Многоуровневая косвенная память

NAR 2 поддерживает многоуровневая косвенная память режим адресации. Местоположение сначала выбирается путем «просмотра» флагов P (индексированных) и R (относительно счетчика программ). Затем, если обнаружен флаг I (косвенный), 32-битное слово загружается из рассчитанной на данный момент ячейки памяти и вычисление перезапускается (включая все флаги режима адресации, выбор индексного регистра и значение параметра - только "код операции" опущено). Таким образом, следующая программа, если она загружена в ячейку памяти 0 и выполнена:

муа I, 0; Память в аккумулятор, косвенная, из ячейки 0

... заморозит NAR 2 в бесконечном цикле вычисления адреса:

  1. «I, 0» указывает, что фактический адрес должен быть загружен из ячейки памяти 0
  2. Ячейка памяти 0 загружена. Он снова читает "I, 0"
  3. «I, 0» указывает, что фактический адрес должен быть загружен из ячейки памяти 0
  4. Ячейка памяти 0 загружена. Он снова читает "I, 0"
  5. «I, 0» указывает, что фактический адрес должен быть загружен из ячейки памяти 0
  6. Ячейка памяти 0 загружена. Он снова читает "I, 0"
  7. ...

Обратите внимание, что:

муа R, I, 0; Память в аккумулятор, относительная, косвенная, из местоположения BN + 0

кажется более общим (может заморозить NAR 2 из любого места), но это зависит от того, когда значение регистра BN увеличивается / изменяется.

Вопрос об обработке флага "N" (немедленный) в присутствии флага I (косвенный) открыт, поскольку ситуация несколько неоднозначна - то есть, следует ли учитывать значение флага, указанное в исходной инструкции или значение в косвенно указанный (найденный) адрес приводит к конфликту. В приведенной выше таблице представлен первый случай, чтобы показать различные режимы адресации, достижимые таким образом.

Чтение значений из индексных регистров

NAR 2 имеет инструкции для инициализации значения конкретного индексного регистра (мнемоника «PIR»). Однако в нем нет специальных инструкций для чтения индексных регистров значений. Это достигается за счет использования индексированных и немедленных (P, N) флагов режима адресации, таких как:

муа Xi, P, N, n; Память в аккумулятор, индексированная, немедленная, 0

... что по сути помещает Xi + n в аккумулятор. Для n = 0 это превращается в команду «загрузить значение индексного регистра в аккумулятор».

Смотрите также

  • НАР 1
  • MMIX, еще один процессор, разработанный профессором для помощи студентам в обучении.

внешняя ссылка