НАР 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 рачунара је конзистентан и једноставан за интерпретацију. Свака линија програма може да садржи до једне инструкције следећег облика:
- Словна ознака инструкције
- Празнина, у случају да инструкција одређује индексни регистар, начин адресирања или параметар; затим зарезом одвојене:
- Име индексног регистра (ако је потребно)
- Зарезом раздвојена слова која одређују начин адресирања
- Вредност параметра
Пример
аум 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 у бескрајној петљи прорачуна адресе:
- "И, 0" одређује да адреса податка за инструкцију треба да се учита са меморијске локације 0
- Садржај меморијске локације 0 се чита и он (опет) садржи "И, 0".
- "И, 0" одређује да адреса податка за инструкцију треба да се учита са меморијске локације 0
- Садржај меморијске локације 0 се чита и он (опет) садржи "И, 0".
- "И, 0" одређује да адреса податка за инструкцију треба да се учита са меморијске локације 0
- Садржај меморијске локације 0 се чита и он (опет) садржи "И, 0".
- ...
Приметите да:
муа Р, И, 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 |
Види још: |
Потпун списак из Србије | бивше Југославије | Света и историју рачунара у: Србији | бившој Југославији | (бившим) комунистичким земљама | свету |