From 47e22398fbda7dba81b6b25e2488ad955cb38c45 Mon Sep 17 00:00:00 2001 From: Daniel Ryzhuk Date: Sun, 24 Jan 2021 18:33:23 +0000 Subject: [PATCH] Add 'sk4/README.md' --- sk4/README.md | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 sk4/README.md diff --git a/sk4/README.md b/sk4/README.md new file mode 100644 index 0000000..c5c49d6 --- /dev/null +++ b/sk4/README.md @@ -0,0 +1,73 @@ +## Zadanie + +Virtuálny stroj programovacieho jazyka TUKAFUK sa skladá z dvoch pások. Na jednej páske je napísaný program. Po programovej páske beží programová hlava PH a číta inštrukcie zľava doprava. Stroj má k dispozícii aj dátovú pásku s osobitnou hlavou DH. + +Príklad počiatočného stavu virtuálneho stroja TUKAFUK: + +``` + PH + | + v + +-----+-----+-----+-----+ +Program | TUK | INK | DEK | FUK | + +-----+-----+-----+-----+ + + DH + | + v + +---+---+---+---+ +Data | 0 | 0 | 0 | 0 | + +---+---+---+---+ +``` + +Skladá sa z nasledujúcich symbolov: + +``` +TUK začiatok programu +INK inkrementuj údaj na mieste kde ukazuje DH +DEK dekrementuj údaj na mieste kde ukazuje DH +BREK posuň hlavu DH do prava o jedno miesto +GLEK posuň hlavu DH do ľava o jedno miesto +PUK vypíš 1 byte z miesta kde ukazuje hlava DH +KUK načítaj 1 byte na miesto je ukazuje hlava DH +[ ak je hlava DH nula, posuň PH na zodpovedajúcu značku ]. Inak pokračj ďalej. +] ak hlava nie je nula, pokračuj s PH na zodpovedajúvej značke [. Inak pokračuj ďalej. +FUK koniec programu +iný znak: odeľuje príkazy alebo slúži ako komentár. +``` + +Vytvorte interpret jazyka TUKAFUK. Program by mal implementovať funkciu: + +```C +void run_tukafuk(const char* code); +``` + +Funkcia preloží vstupný program (zistí adresy skokov) a spustí ho. Preklad programu znamená identifikáciu inštrukcií a zistenie adries pre skok programovej hlavy PH. Pri implementácii zistenia adries PH v programe pre inštrukcie [ a ]. Funkcie getchar() a putchar() použite pre implementáciu inštrukcií PUK a KUK . Pre implementáciu dátovej pásky použite pole znakov, pre implementáciu programovej pásky použite pole spracovaných inštrukcií. + +Vytvorte program v jazyku TUKAFUK na výpis celého Vášho mena. + +## Stručný opis funkčnosti + +Musíme navrhnúť jednoduchý programovací jazyk podobný brainfucku. Načíta zdrojový súbor s príkazmi a potom vykoná rôzne operácie s poľom údajov na základe príkazov, ktoré prečítal + +## Stručný opis riešenia + +Program číta vstupy slovo po slove (oddelené medzerou) a ak je načítaná slová jednou z funkcií, potom sa zapíše do špeciálneho poľa, ktoré tieto funkcie ukladá. Potom sa operácia zavolá na pole s funkciami, ktoré potom spustí samotnú akciu funkcie. + +## Podmienky za ktorých funguje + +Existuje neidentifikovaný dôvod, prečo program nikdy neopustí slučku hľadajúcu TUK, ak prvý riadok súboru nie je príkaz TUK alebo prázdny riadok + +## Používateľská príručka + +Zostavte pomocou: + +``` +make +``` + +Spustiť pomocou + +``` +./program source_file +```