add ASX to the docs, and versionise it
This commit is contained in:
parent
db1794d82e
commit
8f967fc172
8 changed files with 714 additions and 0 deletions
108
docs/versioned_docs/version-0.2.0/asx.md
Normal file
108
docs/versioned_docs/version-0.2.0/asx.md
Normal file
|
@ -0,0 +1,108 @@
|
|||
---
|
||||
sidebar_position: 5
|
||||
description: Az ASX fájl leírása
|
||||
---
|
||||
|
||||
# ASX (Astro Lang Executable) fájl
|
||||
|
||||
---
|
||||
|
||||
:::info
|
||||
|
||||
ASX Verzió: `0.2.0`
|
||||
|
||||
:::
|
||||
|
||||
:::info
|
||||
|
||||
Ezt megtudod nézni a `ASL viewx <fájl>` parancs használatával.
|
||||
|
||||
:::
|
||||
|
||||
## Fájl felépítése:
|
||||
|Név|Leírás|Méret|
|
||||
|---|---|---|
|
||||
|Doctype: ASX|Elmondja a fájlról, hogy tényleg ASX.|3 bytes|
|
||||
|Verzió|Elmondja a fájl ASX verzióját. (byte.byte.byte)|3 bytes|
|
||||
|Funkciók száma|Elmondja, hogy mennyi funkció van a fájlban.|4 bytes|
|
||||
|Funkciók|Lásd: [Funkciók](#funkciók)||
|
||||
|
||||
## Funkciók:
|
||||
|Név|Leírás|Méret|
|
||||
|---|---|---|
|
||||
|Változók száma|Elmondja, hogy a funkcióban mennyi változó van.|4 bytes|
|
||||
|Változók|Lásd: [Változók](#változók)||
|
||||
|Szövegek száma|Elmondja, hogy a funkcióban mennyi szöveg van.|4 bytes|
|
||||
|Szövegek|Lásd: [Szövegek](#szövegek)||
|
||||
|Funkciók száma|Elmondja, hogy a funkcióban mennyi funkció meghívás van.|4 bytes|
|
||||
|Funkciók|Lásd: [Funkció meghívások](#funkció-meghívások)||
|
||||
|Instukciók|Lásd: [Instrukciók](#instrukciók)||
|
||||
|
||||
## Változók:
|
||||
|Név|Méret|
|
||||
|---|---|
|
||||
|Változó nevének hossza|4 bytes|
|
||||
|Változó neve||
|
||||
|Változó ID-je|3 bytes|
|
||||
|Változó kezdő ponja|4 bytes|
|
||||
|Változó végpontja|4 bytes|
|
||||
|
||||
## Szövegek:
|
||||
|Név|Méret|
|
||||
|---|---|
|
||||
|Szöveg ID-je|3 bytes|
|
||||
|A szöveg hossza|4 bytes|
|
||||
|A szöveg||
|
||||
|
||||
## Funkció meghívások:
|
||||
|Név|Méret|
|
||||
|---|---|
|
||||
|A meghívás ID-je|3 bytes|
|
||||
|A meghívott funkció pozíciója|4 bytes|
|
||||
|
||||
## Instrukciók:
|
||||
:::info
|
||||
|
||||
Minden instrukció végére hozzáadunk még 3 bit-et, így összesen 10 byte-ba belefér minden instrukció.
|
||||
|
||||
:::
|
||||
|OP Code - 5 bits|Rövid név|Leírás|Arg1 - 4 bits|Arg2 - 64 bits|Arg3 - 4 bits|
|
||||
|---|---|---|---|---|---|
|
||||
|0|HLT|Befejezi a program futtatását||||
|
||||
|1|LDS|Betölt egy szöveget a regiszterbe|R(A)|Szöveg ID||
|
||||
|2|LDM|Betölti a változót a memóriából|R(A)|Változó ID||
|
||||
|3|LDI|Betölt egy számot a regiszterbe|R(A)|Szám||
|
||||
|4|LDB|Betölt egy logikai értéket a regiszterbe|R(A)|Logikai érték||
|
||||
|5|LDF|Betölt egy funkciót a regiszterbe|R(A)|Funkció ID||
|
||||
|6|LDN|Betölt egy null-t/táblát a regiszterbe|R(A)|Ez egy tábla?||
|
||||
|7|ASS|Hozzáad egy változó ID-t a regiszerhez|R(A)|Változó ID||
|
||||
|8|UNB|Leválaszja a regiszterről a változót|R(A)|||
|
||||
|9|MOV|Átmásolja R(A) pointerjét R(B)-be|R(A)|R(B)||
|
||||
|10|ADD|`R(C) = R(A) + R(B)`|R(A)|R(B)|R(C)|
|
||||
|11|SUB|`R(C) = R(A) - R(B)`|R(A)|R(B)|R(C)|
|
||||
|12|MUL|`R(C) = R(A) * R(B)`|R(A)|R(B)|R(C)|
|
||||
|13|DIV|`R(C) = R(A) / R(B)`|R(A)|R(B)|R(C)|
|
||||
|14|POW|`R(C) = R(A) ^ R(B)`|R(A)|R(B)|R(C)|
|
||||
|15|MOD|`R(C) = R(A) % R(B)`|R(A)|R(B)|R(C)|
|
||||
|16|AND|`R(C) = R(A) && R(B)`|R(A)|R(B)|R(C)|
|
||||
|17|OR|`R(C) = R(A) \|\| R(B)`|R(A)|R(B)|R(C)|
|
||||
|18|EQ|`R(C) = R(A) == R(B)`|R(A)|R(B)|R(C)|
|
||||
|19|NEQ|`R(C) = R(A) != R(B)`|R(A)|R(B)|R(C)|
|
||||
|20|GRE|`R(C) = R(A) > R(B)`|R(A)|R(B)|R(C)|
|
||||
|21|GRQ|`R(C) = R(A) >= R(B)`|R(A)|R(B)|R(C)|
|
||||
|22|LES|`R(C) = R(A) < R(B)`|R(A)|R(B)|R(C)|
|
||||
|23|LEQ|`R(C) = R(A) <= R(B)`|R(A)|R(B)|R(C)|
|
||||
|24|NOT|`R(B) = !R(A)`|R(A)|R(B)||
|
||||
|25|JMP|Oda ugrik a kódban||Hely||
|
||||
|26|CJP|Oda ugrik a kódban, ha a regiszter igaz|R(A)|Hely||
|
||||
|27|CAL|Meghív egy funkciót, majd a kimenetet elmenti R(B)-be|R(A)|R(B)||
|
||||
|28|PSH|Egy értéket belerak a következő funkció bemeneteihez|R(A)|||
|
||||
|29|RET|Visszad egy értéket|R(A)|||
|
||||
|30|GET|Lekér egy értéket a táblából `R(C) = R(A)[R(B)]`|R(A)|R(B)|R(C)|
|
||||
|31|SET|Beállít egy értéket a táblának `R(A)[R(B)] = R(C)`|R(A)|R(B)|R(C)|
|
||||
|
||||
:::tip
|
||||
|
||||
Ha az ENV-ből szeretnénk lekérni valamit akkor a `GET`-et kell használni, úgy, hogy `R(A) = 0`!
|
||||
|
||||
:::
|
Loading…
Add table
Add a link
Reference in a new issue