НАР 2

32-битная RISC-архитектура, разработанная Неделько Парезановичем.

NAR 2 ( серб. Na stavni R ačunar 2, en. Educational Computer 2) — теоретическая модель 32- битного текстового компьютера, созданного профессором факультета математики Белградского университета Неделько Парезановичем в качестве усовершенствования своего предшественника NAR 1. Он использовался для курсов по языку ассемблера и архитектуре компьютеров . Слово «nar» на сербском языке означает гранат . Было создано много симуляторов NAR 2 — например, один был назван «Šljiva» ( en. plum ), поскольку этот фрукт растет в Сербии , а «nar» — нет.

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

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

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

Регистры

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

Мнемоника

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

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

  • MUA ( ср. M emorija U A kumulator , ср. Memory Into Accumulator ) загружает значение в аккумулятор
  • AUM ( ср. A kumulator U M emoriju , англ. Accumulator Into Memory ) сохраняет содержимое аккумулятора
  • PIR ( sr. P unjenje I ndeksnog R egistra , en. Load Index Register) Загружает значение в индексный регистр.

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

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

  • САБФ ( ср. Сабери у Фиксном зарезу , англ . Add, Фиксированная точка) — добавляет параметр в аккумулятор.
  • ODUF ( ср. Оду зми у Фиксном зарезу , англ . Вычитание, Фиксированная точка) — вычитает параметр из аккумулятора
  • MNOF ( ср. Mno ži u F iksnom zarezu , англ. Multiply, Fixed Point) — умножает аккумулятор на параметр
  • DELF ( ср. Del i u F iksnom zarezu , en. Divide, Fixed Point) — делит аккумулятор на параметр
  • PZAF ( ср. Промени Знак Аккумулятора у Фиксированного Зареза , ru . Изменение Знака Аккумулятора , Фиксированная Точка) - Изменяет ( переворачивает ) знак аккумулятора

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

  • SAB ( sr. Sab eri , en. Add) - добавляет параметр в аккумулятор
  • ODU ( ср. Odu zmi , англ. Subtract) — вычитает параметр из аккумулятора
  • MNO ( ср. Mno ži , англ. Multiply) — умножает аккумулятор на параметр
  • DEL ( ср. Del i , англ. Divide) - делит аккумулятор на параметр
  • PZA ( ср. P romeni Z nak A kumulatora , ru. Change the Sign of Accumuator ) - Изменяет (переворачивает) знак аккумулятора.

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

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

  • POL ( ср. Po meri Levo , англ. Shift Left) — сдвигает биты аккумулятора влево
  • POD ( ср. Po meri D esno , англ. Shift Right) — сдвигает биты аккумулятора вправо

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

  • NES ( ср. Ne gativni S kok , ru. Negative Jump ) выполняет условный переход по адресу, указанному параметром, если текущее значение аккумулятора отрицательное
  • BES ( ср. Be zuslovni S kok , ru. Unconditional Jump ) выполняет безусловный переход по адресу, указанному параметром
  • NUS ( ср. Nu la- S kok , англ. Zero Jump ) выполняет условный переход по адресу, указанному параметром, если текущее значение аккумулятора равно нулю
  • ZAR ( ср. Za ustavi R ačunar , ru. 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() — функция «эффективного значения», используемая для косвенной адресации (подробности см. ниже):
Флаги адресовТип инструкции
ПРяНДанныеПрыжок
 -  -  -  - М[п]п
 -  -  - Нпп
 -  - я - М[ф(М[п])]f(М[п])
 -  - яНf(М[п])f(М[п])
 - Р -  - М[БН+п]БН+п
 - Р - НБН+пБН+п
 - Ря - М[ф(М[БН+п])]ф(М[БН+п])
 - РяНф(М[БН+п])ф(М[БН+п])
П -  -  - М[Xi+p]Xi+p
П -  - НXi+pXi+p
П - я - М[ф(М[Xi+p])]f(M[Xi+p])
П - яНf(M[Xi+p])f(M[Xi+p])
ПР -  - М[БН+Хи+п]БН+Хи+п
ПР - НБН+Хи+пБН+Хи+п
ПРя - М[ф(М[БН+Хi+п])]f(M[BN+Xi+p])
ПРяНf(M[BN+Xi+p])f(M[BN+Xi+p])

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

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

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

mua 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. ...

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

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

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

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

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

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

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

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

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

  • НАР 1
  • MMIX — еще один процессор, разработанный профессором для помощи студентам в обучении.
  • Примеры семинарских заданий из ОРС - Примеры студенческих заданий по курсу "ОРС" (Основы компьютерных систем), на сербском языке . Задание "V1: NAR" требует от студента написать симулятор NAR 2.
Взято с "https://en.wikipedia.org/w/index.php?title=NAR_2&oldid=1235730138"