НАР 2

Из пројекта Википедија

НАР 2 (Наставни Рачунар 2) је теоретски модел 32-битног рачунара кога је креирао професор природно-математичког факултета универзитета у Београду Недељко Парезановић као побољшање претходног НАР 1. Коришћен је током предавања о асемблерском програмирању и архитектуре рачунара ("Основе рачунарских система").

Садржај

[уреди] Структура инструкција

Свака инструкција НАР 2 процесора се састојала од тачно једне 32-битне машинске речи и садржала је следеће делове:

  • Код инструкције у 8 највиших битова (24...31)
  • 4 бита (20...23) одреднице индексног регистра који ће бити употребљен у одговарајућим начинима адресирања
  • 4 бита (16...19) који су одређивали начин адресирања:
    • бит 19: П - Посредно
    • бит 18: Р - Релативно
    • бит 17: И - Индиректно
    • бит 16: Н - Непосредно
  • 16 најнижих битова чине параметер или аргумент инструкције

[уреди] Регистри

НАР 2 има следеће регистре:

  • Бројач наредби БН
  • 32-битни акумулатор чији садржај може бити третиран било као реалан или цео број
  • До 16 индексних регистара, X0...X15. Међутим, X0 никада није био употребљен - могуће да је резервисан као бројач наредби БН

[уреди] Кодови инструкција

Бројни кодови инструкција нису одређени, само њихове словне ознаке:


[уреди] Инструкције за рад са регистрима

  • МУА - Меморија У Акумулатор - ставља вредност у акумулатор
  • АУМ - Акумулатор У Меморију - ставља вредност акумулатора у меморију
  • ПИР - Пуњење Индексног Регистра - ставља вредност у задати индексни регистар

[уреди] Целобројна аритметика

Напомена: све ознаке инструкција у овој групи се завршавају словом "Ф" што означава рад у "фиксном зарезу". Ово је, међутим, тачно само за инструкције сабирања, одузимања и негације (промене знака). Инструкције мнижења и дељења су чисто целобројне - зарез је фиксиран десно од цифре најмање тежине.

  • САБФ (Сабери у Фиксном зарезу) - додаје вредност у акумулатор
  • ОДУФ (Одузми у Фиксном зарезу) - одузиме вредност од акумулатора
  • МНОФ (Множи у Фиксном зарезу) - Множи акумулатор параметром
  • ДЕЛФ (Дели у Фиксном зарезу) - Дели акумулатор параметром
  • ПЗАФ (Промени Знак Акумулатора у Фиксном зарезу) - Врши негацију вредности акумулатора


[уреди] Аритметика са бројевима у покретном зарезу

  • САБ (Сабери) - додаје вредност у акумулатор
  • ОДУ (Одузми) - одузиме вредност од акумулатора
  • МНО (Множи) - Множи акумулатор параметром
  • ДЕЛ (Дели) - Дели акумулатор параметром
  • ПЗА (Промени Знак Акумулатора) - Врши негацију вредности акумулатора


[уреди] Логичке

  • КОН (Конјункција) - врши логичко "И" над акумулатором, са вредношћу параметра
  • ДИС (Дисјункција) - врши логичко "ИЛИ" над акумулатором, са вредношћу параметра
  • НЕГ (Негација) - врши логичко "НЕ" (инверзију) акумулатора (игнорише параметар)


[уреди] Логичка померања

  • ПОЛ (Помери Лево) - помера битове акумулатора на лево
  • ПОД (Помери Десно) - помера битове акумулатора на десно


[уреди] Контрола тока

  • НЕС (Негативни Скок) - извршава условни скок на задату адресу ако је вредност акумулатора негативна
  • БЕС (Безусловни Скок) - извршава безусловни скок на задату адресу
  • НУС (Нула-Скок) - извршава условни скок на задату адресу ако је вредност акумулатора нула
  • ЗАР (Заустави Рачунар) - зауставља рачунар

[уреди] Стандардна синтакса

Асемблер НАР 2 рачунара је конзистентан и једноставан за интерпретацију. Свака линија програма може да садржи до једне инструкције следећег облика:

  1. Словна ознака инструкције
  2. Празнина, у случају да инструкција одређује индексни регистар, начин адресирања или параметар; затим зарезом одвојене:
    1. Име индексног регистра (ако је потребно)
    2. Зарезом раздвојена слова која одређују начин адресирања
    3. Вредност параметра

Пример

  аум   X1, п, 0
  муа   н, 1
  аум   15
  пир   X1, п, н, 1
  муа   X1, п, н, 0
  одуф  н, 1
  одуф  X2, п, н, 0

[уреди] Начини адресирања

Са четири бита за одређивање начина адресирања (П, Р, И и Н), НАР 2 инструкције могу да задају до 16 различитих начина адресирања иако немају сви смисла у свим инструкцијама. Интересантно је да су називи начина адресирања изабрани тако да је могуће "П, Н" - посредно-непосредно адресирање и да се користе називи "посредно" и "индиректно" уместо "индексно" и "посредно".

У следећој табели:

  • M[x] означава 32-битну вредност (садржај) меморијске локације са адресом x
  • БН означава бројач наредби
  • p означава 16-битну вредност параметра (са знаком)
  • Xi означава индекси регистар задат подацима са треутне меморијке локације
  • f() је функција "ефективне вредности" при индиректном адресирању, која се рачуна по истој табели:
Одреднице адресирања Врста инструкције
П Р И Н Подаци Скок
- - - - M[p] p
- - - Н p p
- - I - M[f(M[p])] f(M[p])
- - И Н f(M[p]) f(M[p])
- Р - - M[БН+p] БН+p
- Р - Н БН+p БН+p
- Р I - M[f(M[БН+p])] f(M[БН+p])
- Р И Н f(M[БН+p]) f(M[БН+p])
П - - - M[Xi+p] Xi+p
П - - Н Xi+p Xi+p
П - И - M[f(M[Xi+p])] f(M[Xi+p])
П - И Н f(M[Xi+p]) f(M[Xi+p])
П Р - - M[БН+Xi+p] БН+Xi+p
П Р - Н BN+Xi+p BN+Xi+p
П Р И - M[f(M[БН+Xi+p])] f(M[БН+Xi+p])
П Р И Н f(M[БН+Xi+p]) f(M[БН+Xi+p])

Напомена: Одредница адресирања "Н" нема ефекте на инструкције за контролу тока јер процесор не може да скочи "у вредност" него само на задату адресу.

[уреди] Итеративно индиректно адресирање

НАР 2 подржава итеративно индиректно адресирање. Меморијска локација се прво рачуна узевши у обзир П и Р одреднице начина адресирања. Затим, ако је одредница "И" присутна, 32-битна машинска реч се чита са те локације и прорачун почиње из почетка, укључујићи нове одреднице начина адресирања, селектора индексног регистра и вредности параметра - само се код инструкције игнорише. Тако, ако следећи програм учитамо на адресу 0 и извршимо:

  муа И, 0

... замрзнућемо НАР 2 у бескрајној петљи прорачуна адресе:

  1. "И, 0" одређује да адреса податка за инструкцију треба да се учита са меморијске локације 0
  2. Садржај меморијске локације 0 се чита и он (опет) садржи "И, 0".
  3. "И, 0" одређује да адреса податка за инструкцију треба да се учита са меморијске локације 0
  4. Садржај меморијске локације 0 се чита и он (опет) садржи "И, 0".
  5. "И, 0" одређује да адреса податка за инструкцију треба да се учита са меморијске локације 0
  6. Садржај меморијске локације 0 се чита и он (опет) садржи "И, 0".
  7. ...

Приметите да:

  муа Р, И, 0

изгледа општије (може да замрзне НАР 2 са било које адресе), али ово зависи од тренутна када се садржај регистра БН мења.

Остаје питање третмана одренице "Н" (непосредно адресирање) заједно са одредницом "И" - да ли или не треба поштовати почетну/оригиналну одредницу "Н" из инструкције или ону која стиже са (индиректно) прочитаном адресом? Приказана табела приказује први случај само да би приказала више начина адресирања.

[уреди] Читање вредности индексних регистара

НАР 2 не садржи посебну инструкцију за читање садржаја индексних регистара која би парирала ПИР инструкцији. Ипак, постоји једноставан начин да се то изведе употребом посредног-непосредног адресирања (П, Н) као у следећем примеру:

  муа Xi, П, Н, n

... што поставља вредност Xi+n у акумулатор. За n=0 ово практично преписује садржај задатог индексног регистра у акумулатор.


Рачунари из Србије

1980‑2000:

ТИМ-100 | ТИМ-001 | ТИМ-600 | ТИМ-011 | ТИМ-40М | АТЛАС-ТИМ AT 32 | Галаксија | Галаксија Плус | Pecom 32 | Pecom 64 | Lira XT | Лола 8 | ПА512 | ЛПА512

1960‑1979:

ЦЕР Рачунари (ЦЕР-10, ЦЕР-2, ЦЕР-20, ЦЕР-200, ЦЕР-202, ЦЕР-22, ЦЕР-12, ЦЕР-203) | ХРС-100

Теоретски:

НАР 1 | НАР 2

Види још:

Потпун списак из Србије | бивше Југославије | Света и историју рачунара у: Србији | бившој Југославији | (бившим) комунистичким земљама | свету

Други језици