Add docs, update gitignore
authorbylex <mbilek06@gmail.com>
Sun, 13 Apr 2025 18:29:29 +0000 (20:29 +0200)
committerbylex <mbilek06@gmail.com>
Sun, 13 Apr 2025 18:29:29 +0000 (20:29 +0200)
docs.groff [new file with mode: 0644]

diff --git a/docs.groff b/docs.groff
new file mode 100644 (file)
index 0000000..aa0d732
--- /dev/null
@@ -0,0 +1,118 @@
+.uh
+.pp
+Dokumentace maturitniho projektu
+.sh 1 "Uvod"
+.pp
+Tento kratky dokument obsahuje dokumentaci maturitniho projektu
+.br
+Zdrojovy kod je dostupny na odkazu
+.q "https://git.bylex.cz/?p=maturita.git"
+.sh 1 "Assembler"
+.pp
+Cast programu, ktera zpracovava lidsky-citelny kod na mezikod, ktery je pote interpretererem spusteny
+.sh 2 "Jazyk"
+.pp
+Pouzivany jazyk je strukturovany podobne jako jine, jiz existujici jazyky rodiny Assembly
+.br
+Jedine povolene instrukce jsou ty, ktere jsou definovane uvnitr souboru
+.q "common.h"
+ostatni instrukce produkuji bud nepouzitelny vystupni soubor nebo hned zpusobi chybu programu
+.br
+Jednoduche priklady pouziti lze videt v souborech
+.np
+test.s
+.np
+test_gfx.s
+.np
+test_pic.s
+.np
+test_random.s
+.np
+test_stack.s
+.sh 3 "Instrukce"
+.pp
+Popis jednotlivych instrukci se nachazi v komentarich uvnitr souboru
+.q "opcodes.h"
+.sh 3 "Komentare"
+.pp
+Komentare se znaci znakem
+.q "#"
+.br
+Komentar muze byt
+.i pouze
+na samostatnem radku
+.sh 3 "Organizace pameti"
+.pp
+Pamet je bezne organizovana od adresy 0 dal, ale toto je mozne zmenit pomoci operatoru
+.q "."
+.br
+Pokud assembler narazi na tento operator, posune kod na dalsich radkach na prislusnou adresu, adresa se zadava jako decimalni cislo
+.br
+.b "Assembler neresi kolize pametovych prostoru, je nutne, aby programator pocital s delkou sveho kodu a upravil organizaci pameti odpovidajicim zpusobem"
+.sh 3 "Labely"
+.pp
+Labely lze definovat pomoci
+.q "$"
+a lze je pouzit pro instrukce
+.q "jmp" a .q "jez"
+.br
+Slouzi pro zjednoduseni prace programatora, kdo diky nim nemusi manualne zjistovat adresu pameti destinace skoku
+.sh 2 "Pouziti v prikazove radce"
+.pp
+Program assembler je volan s 2 parametry
+.np
+Vstupni soubor
+.np
+Vystupni soubor
+.sh 1 "Interpreter"
+.pp
+Interpreter spousti soubory vytvorene interpreterem, teoreticky i manualnr vytvorene soubory, za predpokladu ze jsou stale platne
+.sh 2 "Pouziti v prikazove radce"
+.pp
+Program interpreter je volan s 2 parametry
+.np
+Vstupni soubor
+.np
+Volba rychlosti - ("--fast", "--info", "--debug")
+.sh 2 "Format souboru"
+.pp
+Soubor ma delku presne 128KiB - 65536 16-bit cisel
+.br
+Uvnitr se nachazi instrukce a data, nejsou nijak oddelena a je tudiz zodpovednosti programatora, aby zajistil, ze se interpreter nedostane k castem kodu, ktere obsahuji data programu a nebude se je snazit spoustet
+.br
+.b "Program neobsahuje zadnou ochranu proti spatnemu kodu ani zadnou schopnost zpracovavat vyjimky"
+.br
+Instrukce ma 4 byty - prvni byte obsahuje kod instrukce, dalsi 3 jsou mozne argumenty - viz. soubor
+.q "opcodes.h"
+a
+.q "common.c"
+.sh 2 "Rezimy spusteni"
+.pp
+Program podporuje 3 rezimy spusteni, voli se pomoci druheho parametru na prikazove radce
+.sh 4 "Fast"
+.pp
+Nejrychlejsi rezim spusteni, zaroven rezim, ktery je zvolen pokud chybi 2. parametr
+.sh 4 "Info"
+.pp
+Rezim, ktery poskytuje trochu informaci o bezicim programu
+.br
+Muze byt uzitecny napriklad pri hledani zacykleni, ktere se objevi az po dlouhe dobe pri pouziti rezimu debug
+.br
+Ukazane informace obsahuji
+.np
+Pocet jiz spustenych instrukci
+.np
+Aktualne spoustenou adresu
+.sh 4 "Debug"
+.pp
+Nejpomalejsi rezim spusteni, umoznuje zasahovat do programu
+.sh 3 "Pouziti debuggeru"
+.pp
+Debugger je aktivni pouze v debug rezimu, ovlada se pomoci zkratek zobrazenych pri chodu
+.br
+Pokud nejsou v programu zadne aktivni breakpointy, tak se program prepne do rychleho rezimu, protoze jiz neni mozne program dal pres debugger nijak ovladat
+.br
+Prikaz
+.q "disassemble"
+.b nevytvari
+presnou kopii puvodniho souboru - tzn. nedokaze zpetne doplnit labely ani komentare