stringtranslate.com

НАР 2

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-битные машинные слова. Каждая машинная инструкция содержит:

Регистры

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

Мнемоника

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

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

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

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

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

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

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

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

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

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

Синтаксис языка ассемблера 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 различных режимов адресации, но не все из них имеют смысл во всех инструкциях. В следующей таблице:

Примечание 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 это превращается в инструкцию "загрузить значение индексного регистра в аккумулятор".

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

Внешние ссылки