(c) 2002-2003, Juraj Simlovic, Medvedik, jsimlojsimlo.sk

StackComputer Emulator Manual

Version 1.4

(c) 2002-2003, Juraj Simlovic, jsimlojsimlo.sk


Obsah:
1. Popis jazyka
2. Editor




Last update: Sep 20, 2003




1. Popis jazyka

Architektura

Zasobnikovy stroj je pocitac, ktory pracuje s celymi cislami, pozna zakladne aritmeticke operacie (scitanie, odcitanie, nasobenie a delenie), prikazy skoku a pomieneneho skoku (test na nulu alebo zapornost, test na prazdnost zasobniku), prikazy pre pracu so zasobnikmi, prikazy pre pracu zo vstupnou a vystupnou linkou.

Sklada sa z jedneho pracovneho registra (akumulatoru), vstupnej/vystupnej linky a obsahuje neobmedzeny, ale konecny pocet zasobnikov. V originalnej verzii stroja boli tieto zasobniky odpojitelnou hardwareovou/softwareovou sucastou.

Velkost zasobnikov (pocet prvkov ktore sa do zasobniku zmestia) bol obmedzeny typom pouziteho zariadenia. V emulatore su zasobniky tiez logicky neobmedzene. Fyzicke medze tvori iba velkost dostupnej pamate.

Zasobniky su logicky rozdelene na primarny zasobnik a zvysne sekundarne zasobniky.

Jazyk

Jazyk, ktorym sa stroj programuje (resp. jeho upravena verzia) obsahuje minimalne ale postacujuce mnozstvo potrebnych operacii.

Vsetky instrukcie maju rovnaky, pevny format a zapisuju sa vzdy cele na jeden riadok. Nezalezi pritom na velkych a malych pismenach, ani na pocte prazdnych (bielych) znakov.

Cisla sa zapisuju v obvyklej, arabskej notacii, v dekadickej ciselnej sustave.

Jazyk obsahuje jednoriadkove kometare, zacinajuce dvojicou znakov // a konciace na konci daneho riadku.

Pojem identifikator oznacuje nazov zasobniku, pripadne cislo alebo ciselnu kostantu. Platnym identifikatorom je prazdny identifikator (oznacujuci primarny bezmenny zasobnik); retazec znakov, cislic a podrtznikov (_), ktory nezacina cislicou; cele dekadicke cislo v arabskej notacii; alebo ciselna konstanta. Identifikator goto nie je doporuceny, pretoze koliduje s klucovym slovom jazyka; nie je vsak implicitne zakazany.

Ciselne konstanty su dve, -min a -max, ktore reprezentuju 'minus a plus nekonecno'; cize dostatocne velke a dostatocne male cislo.

Navestie oznacuje meno/cislo riadku. Muoze obsahovat alfanumericke znaky a znak podtrznik (_).

Prikaz STACK

STACK identifikator1 [identifikator2 [...]]
Program muoze (ale nemusi) zacinat prikazom STACK, ktory definuje mena zasobnikov. identifikator1 .. identifikatorN su mena sekundarnych zasobnikov. Primarny zasobnik nema meno a nie je potrebne ho definovat.

Prikaz STACK nie je instrukcia a nesmie pred sebou obsahovat navestie ani ine instrukcie.

Instrukcie

[:navestie] instrukcia
Instrukcii nemusi nutne predchadzat navestie, avsak ak predchadza, musi byt na tom istom riadku ako samotna instrukcia. Riadok s navestim bez instrukcie je povazovany za chybu.

Prva skupina instrukcii

Pozn. Instrukcie bez udaneho identifikatoru pracuju s primarnym zasobnikom.

SET identifikator
Odoberie hodnotu zo zasobniku identifikator a ulozi ju do pracovneho registru.
ADD identifikator
Odoberie hodnotu zo zasobniku identifikator a pripocita ju k hodnote v pracovnom registri.
SUB identifikator
Odoberie hodnotu zo zasobniku identifikator a odpocita ju od hodnoty v pracovnom registri.
MUL identifikator
Odoberie hodnotu zo zasobniku identifikator a vynasobi nou hodnotou v pracovnom registri.
DIV identifikator
Odoberie hodnotu zo zasobniku identifikator a celociselne nou deli hodnotou v pracovnom registri.
PUSH identifikator
Hodnotu z pracovneho registru ulozi na zasobnik identifikator. Pracovny register sa nemeni.
POP identifikator
Odoberie hodnotu zo zasobniku identifikator. Pracovny register sa nemeni. Pozn. Instrukcia POP sluzi na vyberanie zo zasobniku bez potreby s hodnoutami pracovat.
INPUT navestie
Nacita jedno cislo zo vstupnej linky a ulozi ho do pracovneho registru. Pokial sa na vstupnej linke uz ziadne cislo nenachadza, skoci v programe na riadok navestie.
OUTPUT
Posle obsah pracovneho registru na vystupnu linku. Pracovny register sa nemeni.

Druha skupina instrukcii

EXIT
Ukonci beh programu. Uprace zvysne hodnoty v zasobnikoch a uvolni pamat.
Riadok za poslednym riadkom programu sa berie ako EXIT automaticky, program preto nie je touto instrukciou ukoncovat nutne.
GOTO navestie
Skoci v programe na riadok navestie. Beh programu dalej pokracuje prislusnou instrukciou.
IF podmienka GOTO navestie1 [ELSE navestie2]
Pokial je podmienka splnena, skoci v programe na riadok navestie1, inak beh pogramu pokracuje na riadku nasledujucom. V pripade, ze instrukcia pokracuje slovom ELSE a podmienka nebola splnena, skoci v programe na riadok navestie2.

Podmienky

ZERO
Pokial je obsah pracovneho registra rovny nule, podmienka je splnena, v opacnom pripade je nesplnena.
NEG
Pokial je obsah pracovneho registru zaporny, podmienka je splnena, v opacnom pripade je nesplnena.
EMPTY indetifikator
Pokial je zasobnik indetifikator prazdny, podmienka je splnena, v opacnom pripade je nesplnena. Pozn. EMPTY bez udaneho identifikatoru pracuje s primarnym zasobnikom.
NOT podmienka
Logicka negacia podmienky podmienka.


2. Editor

Funkcnost editacneho okna ako aj zakladne prikazy v menu su prebrate z aplikacie Notepad. Ich pouzitie je detailne popisane v helpe pre Windows.

Menu Run

Run
Spusti program. Prelozi kod programu, vytvori potrebne zasobniky, otvori okno vstupnej linky a po zadani vstupnych cisel zacne vykonavat jednotlive instrukcie programu.

Trace
Prelozi kod programu, vytvori potrebne zasobniky, otvori okno vstupnej linky a po zadani vstupnych cisel otvori debug okno, v ktorom uzivatel muoze detailne pozorovat beh programu krok po kroku.

Run to cursor
Spusti program. Prelozi kod programu, vytvori potrebne zasobniky, otvori okno vstupnej linky a po zadani vstupnych cisel zacne vykonavat jednotlive instrukcie programu. Beh programu zastavi na riadku, kde bol kurzor a otvori debug okno, v ktorom uzivatel muoze dalej detailne pozorovat beh programu krok po kroku.


3. Input

Po spusteni programu sa vzdy otvori okno vstupnej linky, ktore ocakava zadanie vstupnych cisel v standardnom dekadickom zapise. Jednotlive cisla musia byt oddelene aspon jednou medzerou.

V hornej casti okna sa nachadza dropdown list obsahujuci predosle zadania vstupnych cisel (historia vstupu).


4. Runtime

Break
Pocas behu programu sa da program pozastavit klavesovou skratkou F6. Otvori sa debug okno, v ktorom uzivatel muoze dalej detailne pozorovat beh programu krok po kroku.

Stop
Ukonci beh proramu. Vyprazdni zasobniky a uvolni pamat.


5. Debug

Po otvoreni debug okna sa kurzorom zvyrazni riadok ktory mal byt prave vykonany. Checkboxami nalavo od kodu sa zadavaju breakpointy. Pri behu programu sa potom program prerusi vzdy pred vykonanim riadku s breakpointom.

V statusbare sa nachadzaju aktualne informacie o stave pracovneho registru (WR), vstupnej linky (In) a o vrcholoch jednotlivych zasobnikov. Po kliknuti na statusbar sa otvori okno s prehladnejsimi informaciami o vrcholoch jednotlivych zasobnikov.



(c) 2001-2003, Medvedik, Juraj Simlovic, notepadjsimlo.sk