NAR 2 - NAR 2
NAR 2 (srbština Nastavni Računar 2, en. Vzdělávací počítač 2) je teoretický model 32-bit slovní počítač vytvořený Matematickou fakultou UK Univerzita v Bělehradě profesor Nedeljko Parezanović jako vylepšení svého předchůdce, NAR 1. Byl použit pro Montážní jazyk a Počítačová architektura kurzy. Slovo „nar“ znamená Granátové jablko v srbština. Bylo vytvořeno mnoho simulátorů NAR 2 - například jeden byl pojmenován „Šljiva“ (en. švestka ) jak toto ovoce roste Srbsko, zatímco „nar“ nikoli.
Struktura pokynů
NAR 2 procesor používá 32bitová strojová slova. Každý Stroj návod obsahuje:
- operační kód v 8 nejvýznamnější bity (bity 24 až 31)
- 4 bity (20 až 23) určující Registr rejstříku použít s režimy indexovaného adresování
- 4 bity (16 až 19) obsahující režim adresy vlajky:
- bit 19: P (sr. POsredno, en. zprostředkovaný) - indexováno
- bit 18: R (sr. Relativno) - ve vztahu k počítadlu programu
- bit 17: Já (sr. Jándirektno) - víceúrovňová paměť nepřímá (poznámka: adresa je načtena ze zadaného umístění a pokud by také specifikovala příznak „I“, výpočet nepřímé adresy pokračuje)
- bit 16: N (sr. Neposredno) - okamžité
- 16 bitů podepsaný hodnota parametru
Registry
NAR 2 má čtyři registry:
- A Počítadlo programu volala BN (sr. Brojač Naredbi, en. Počítadlo pokynů)
- Jeden 32bitový akumulátor které lze považovat za celé číslo (pevný bod ) nebo reálné číslo (s plovoucí desetinnou čárkou)
- Až 16 Rejstříkové registry jsou specifikovatelné, X0 až X15. X0 však nebyl nikdy použit, možná proto, že byl rezervován jako programový čítač (BN)
- Nebyly žádné vlajky nebo vlajky
Mnemotechnika
K dispozici byly následující operační kódy (skutečné kódy nebyly specifikovány, pouze mnemotechnické pomůcky):
Přístup do paměti / registru
- MUA (sr. Memorija U Akumulátor, en. Memory Into Accumulator) načte hodnotu do akumulátoru
- AUM (sr. Akumulátor U Memoriju, en. Accumulator Into Memory) ukládá obsah akumulátoru
- PIR (sr. Punjenje Jándeksnog Registra, en. Load Index Register) Načte hodnotu do indexového registru
Celé číslo aritmetické
Poznámka: všechny mnemotechnické pomůcky v této skupině končí písmenem „F“ označujícím „Fiksni zarez“ (en. Pevný bod) aritmetický. To však platí pouze pro sčítání, odčítání a negaci (změna znaménka). Násobení a dělení předpokládá, že „bod“ je fixován napravo od nejméně významného bitu - to znamená, že čísla jsou celá čísla.
- SABF (sr. SabEri u Fiksnom zarezu, en. Add, Fixed Point) - přidá parametr do akumulátoru
- ODUF (sr. Oduzmi u Fiksnom zarezu, en. Subtract, Fixed Point) - odečte parametr z akumulátoru
- MNOF (sr. Množi u Fiksnom zarezu, en. Multiply, Fixed Point) - Násobí akumulátor s parametrem
- DELF (sr. Deljá u Fiksnom zarezu, en. Divide, Fixed Point) - Rozdělí akumulátor podle parametru
- PZAF (sr. Promeni Znak Akumulatora u Fiksnom zarezu, en. Change the Sign of Accumuator, Fixed Point) - Změní (převrátí) znaménko akumulátoru
Aritmetika s plovoucí desetinnou čárkou
- SAB (sr. SabEri, en. Přidat) - přidá parametr do akumulátoru
- ODU (sr. Oduzmi, en. Odečíst) - odečte parametr z akumulátoru
- MNO (sr. Množi, en. Násobit) - Násobí akumulátor s parametrem
- DEL (sr. Deli, en. Divide) - Rozdělí akumulátor podle parametru
- PZA (sr. Promeni Znak Akumulatora, en. Change the Sign of Accumuator) - Změní (převrátí) znamení akumulátoru
Bitové / logické
- KON (sr. Konjunkcija, en. Spojení ) - provádí logické AND s parametrem a akumulátorem a uloží výsledek do akumulátoru
- DIS (sr. Disjunkcija, en. Disjunkce ) - provádí logické NEBO s parametrem a akumulátorem a uloží výsledek do akumulátoru
- NEG (sr. Negacija, en. Negace ) - provádí logické NE o obsahu akumulátoru (ignoruje parametr)
Poznámka: výše uvedené operace jsou všechny bitový. Jejich jména naznačují, že jsou čistě logické operace ale lze je vysvětlit, jako by fungovaly na vektorech bitů a samostatně aplikovaly logické operace na každou dvojici bitů.
Logické posuny
- POL (sr. Pomeri Levo, en. Shift Left) - posune bity akumulátoru doleva
- LUSK (sr. Pomeri Desno, en. Shift Right) - posune bity akumulátoru doprava
Řízení toku
- NES (sr. Negativni Skok, en. Negative Jump) provede a podmíněný skok na adresu určenou parametrem, pokud je aktuální hodnota akumulátoru záporná
- BES (sr. Býtzuslovni Skok, en. Unconditional Jump) provede bezpodmínečný skok na adresu určenou parametrem
- NUS (sr. NuLos Angeles-Skok, en. Zero Jump) provádí a podmíněný skok na adresu určenou parametrem, pokud je aktuální hodnota akumulátoru nulová
- ZAR (sr. Zaustavi Računar, en. Stop the Computer) zastaví jakékoli další zpracování; toto je jediná instrukce, která parametr ignoruje.
Standardní syntaxe jazyka sestavení
Syntaxe jazyka sestavení NAR 2 byla navržena tak, aby byla přímá a snadno analyzovatelná. Každý programový řádek může obsahovat až jednu instrukci specifikovanou následovně:
- Instrukční mnemotechnická pomůcka
- Mezery, pokud instrukce určuje indexové registry, režim adresování nebo parametr a poté oddělené čárkami:
- Název rejstříku rejstříku, je-li použit
- Názvy příznaků režimu adresování (oddělené také čárkami)
- Hodnota parametru
Ukázkový kód:
aum X1, p, 0 mua n, 1 aum 15 pir X1, p, n, 1 mua X1, p, n, 0 oduf n, 1 oduf X2, p, n, 0
Režimy adresování
Se čtyřmi bity pro výběr režimu adresy (P, R, I a N - indexované, relativní, nepřímé a okamžité) mohou instrukce NAR 2 specifikovat 16 různých režimů adresování, ale ne všechny mají smysl ve všech instrukcích. V následující tabulce:
- M [x] určuje 32bitovou hodnotu (obsah) umístění paměti x
- BN určuje počitadlo programu
- p určuje 16bitový podepsaný parametr v umístění
- Xi určuje indexový registr vybraný údaji v místě
- f () je funkce „efektivní hodnoty“ používaná pro nepřímé adresování (viz podrobnosti níže):
Addr. vlajky | Typ instrukce | ||||
---|---|---|---|---|---|
P | R | Já | N | Data | Skok |
- | - | - | - | M [p] | str |
- | - | - | N | str | str |
- | - | Já | - | M [f (M [p])] | f (M [p]) |
- | - | Já | N | f (M [p]) | f (M [p]) |
- | R | - | - | M [BN + p] | BN + str |
- | R | - | N | BN + str | BN + str |
- | R | Já | - | M [f (M [BN + p])] | f (M [BN + p]) |
- | R | Já | N | f (M [BN + p]) | f (M [BN + p]) |
P | - | - | - | M [Xi + p] | Xi + str |
P | - | - | N | Xi + str | Xi + str |
P | - | Já | - | M [f (M [Xi + p])] | f (M [Xi + p]) |
P | - | Já | N | f (M [Xi + p]) | f (M [Xi + p]) |
P | R | - | - | M [BN + Xi + p] | BN + Xi + str |
P | R | - | N | BN + Xi + str | BN + Xi + str |
P | R | Já | - | M [f (M [BN + Xi + p])] | f (M [BN + Xi + p]) |
P | R | Já | N | f (M [BN + Xi + p]) | f (M [BN + Xi + p]) |
Poznámka 1: Příznak „N“ (okamžitý) nemá žádný vliv na pokyny skoku (řízení toku), protože procesor nemůže skočit na zadanou hodnotu, ale pouze na adresu paměti.
Víceúrovňová paměť nepřímá
Podporuje NAR 2 víceúrovňová paměť nepřímá režim adresování. Umístění je nejprve vybráno „pohledem“ na příznaky P (indexované) a R (relativní k čítači programu). Poté, když je detekován I (nepřímý) příznak, je načteno 32bitové slovo z dosud vypočteného paměťového místa a výpočet je restartován (včetně všech příznaků režimu adresování, výběru indexového registru a hodnoty parametru - pouze „opcode“ je vynecháno). Tedy následující program, pokud je načten na paměťovém místě 0 a spuštěn:
mua I, 0; Paměť do akumulátoru, nepřímá, z umístění 0
... zmrazí NAR 2 ve smyčce pro výpočet nekonečné adresy:
- „I, 0“ určuje, že skutečná adresa se má načíst z paměťového místa 0
- Načte se umístění paměti 0. Znovu se přečte „I, 0“
- „I, 0“ určuje, že skutečná adresa se má načíst z paměťového místa 0
- Načte se umístění paměti 0. Znovu se přečte „I, 0“
- „I, 0“ určuje, že skutečná adresa se má načíst z paměťového místa 0
- Načte se umístění paměti 0. Znovu se přečte „I, 0“
- ...
Všimněte si, že:
mua R, I, 0; Paměť do akumulátoru, relativní, nepřímá, z umístění BN + 0
se zdá být obecnější (může zmrazit NAR 2 z libovolného místa), ale to záleží na tom, kdy je hodnota registru BN zvýšena / změněna.
Otázka zacházení s příznakem „N“ (okamžitým) za přítomnosti příznaku I (nepřímého) je otevřená, protože situace je poněkud nejednoznačná - to znamená, zda respektovat hodnotu příznaku uvedenou v původní instrukci nebo v nepřímo zadaná (vyhledaná) adresa vede ke konfliktu. Tabulka výše představuje první případ, který ukazuje různé režimy adresování dosažitelné tímto způsobem.
Čtení hodnot z indexových registrů
NAR 2 má pokyny k inicializaci hodnoty konkrétního indexového registru (mnemotechnická pomůcka "PIR"). Nemá však speciální pokyny ke čtení hodnot indexových registrů. Toho je dosaženo použitím indexovaných a okamžitých (P, N) příznaků režimu adresování, například:
mua Xi, P, N, n; Paměť do akumulátoru, indexovaná, okamžitá, 0
... což v podstatě vloží Xi + n do akumulátoru. Pro n = 0 se to změní na instrukci "načíst hodnotu registru indexu do akumulátoru".
Viz také
externí odkazy
- Primeri seminarskih zadejteaka iz ORS - Příklady úkolů studentů pro kurz "ORS" (Základy počítačových systémů), v Srbský jazyk. Úkol „V1: NAR“ vyžaduje, aby student napsal simulátor NAR 2.