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, п, 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() — функция «эффективного значения», используемая для косвенной адресации (подробности см. ниже):
Примечание 1: Флаг «N» (немедленный) не влияет на инструкции перехода (управления потоком), поскольку процессор не может перейти к указанному значению, а может перейти только к адресу памяти.
Многоуровневая косвенная память
NAR 2 поддерживает режим косвенной адресации многоуровневой памяти . Местоположение сначала выбирается путем "просмотра" флагов P (индексированный) и R (относительно счетчика программ). Затем, если обнаружен флаг I (косвенный), 32-битное слово загружается из вычисленного на данный момент местоположения памяти, и вычисление перезапускается (включая все флаги режима адресации, выбор индексного регистра и значение параметра - опускается только "код операции"). Таким образом, следующая программа, если загружена в местоположение памяти 0 и выполнена:
mua I, 0 ; Память-в-аккумулятор, косвенный, из ячейки 0
... заморозит NAR 2 в бесконечном цикле вычисления адреса:
- «I, 0» указывает, что фактический адрес должен быть загружен из ячейки памяти 0.
- Загружена ячейка памяти 0. Снова читается "I, 0"
- «I, 0» указывает, что фактический адрес должен быть загружен из ячейки памяти 0.
- Загружена ячейка памяти 0. Снова читается "I, 0"
- «I, 0» указывает, что фактический адрес должен быть загружен из ячейки памяти 0.
- Загружена ячейка памяти 0. Снова читается "I, 0"
- ...
Обратите внимание, что:
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.