Ugrás a fő tartalomhoz
Verzió: Next

ASX (Astro Lang Executable) fájl


információ

ASX Verzió: 0.2.0

információ

Ezt megtudod nézni a ASL viewx <fájl> parancs használatával.

Fájl felépítése:

NévLeírásMéret
Doctype: ASXElmondja 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ámaElmondja, hogy mennyi funkció van a fájlban.4 bytes
FunkciókLásd: Funkciók

Funkciók:

NévLeírásMéret
Változók számaElmondja, hogy a funkcióban mennyi változó van.4 bytes
VáltozókLásd: Változók
Szövegek számaElmondja, hogy a funkcióban mennyi szöveg van.4 bytes
SzövegekLásd: Szövegek
Funkciók számaElmondja, hogy a funkcióban mennyi funkció meghívás van.4 bytes
FunkciókLásd: Funkció meghívások
Catch posMegmutatja a catch funkció helyzetét, csak try-ban. Normál funkciók esetén 04 bytes
Instrukciók számaElmondja, hogy a funkcióban mennyi instrukció van.4 bytes
InstukciókLásd: Instrukciók

Változók:

NévMéret
Változó nevének hossza4 bytes
Változó neve
Változó ID-je3 bytes
Változó kezdő ponja4 bytes
Változó végpontja4 bytes

Szövegek:

NévMéret
Szöveg ID-je3 bytes
A szöveg hossza4 bytes
A szöveg

Funkció meghívások:

NévMéret
A meghívás ID-je3 bytes
A meghívott funkció pozíciója4 bytes

Instrukciók:

információ

Minden instrukció végére hozzáadunk még 3 bit-et, így összesen 10 byte-ba belefér minden instrukció.

OP Code - 5 bitsRövid névLeírásArg1 - 4 bitsArg2 - 64 bitsArg3 - 4 bits
0HLTBefejezi a program futtatását
1LDSBetölt egy szöveget a regiszterbeR(A)Szöveg ID
2LDMBetölti a változót a memóriábólR(A)Változó ID
3LDIBetölt egy számot a regiszterbeR(A)Szám
4LDBBetölt egy logikai értéket a regiszterbeR(A)Logikai érték
5LDFBetölt egy funkciót a regiszterbeR(A)Funkció ID
6LDNBetölt egy null-t/táblát a regiszterbeR(A)Ez egy tábla?
7ASSHozzáad egy változó ID-t a regiszerhezR(A)Változó ID
8UNBLeválaszja a regiszterről a változótR(A)
9MOVÁtmásolja R(A) pointerjét R(B)-beR(A)R(B)
10ADDR(C) = R(A) + R(B)R(A)R(B)R(C)
11SUBR(C) = R(A) - R(B)R(A)R(B)R(C)
12MULR(C) = R(A) * R(B)R(A)R(B)R(C)
13DIVR(C) = R(A) / R(B)R(A)R(B)R(C)
14POWR(C) = R(A) ^ R(B)R(A)R(B)R(C)
15MODR(C) = R(A) % R(B)R(A)R(B)R(C)
16ANDR(C) = R(A) && R(B)R(A)R(B)R(C)
17ORR(C) = R(A) || R(B)R(A)R(B)R(C)
18EQR(C) = R(A) == R(B)R(A)R(B)R(C)
19NEQR(C) = R(A) != R(B)R(A)R(B)R(C)
20GRER(C) = R(A) > R(B)R(A)R(B)R(C)
21GRQR(C) = R(A) >= R(B)R(A)R(B)R(C)
22LESR(C) = R(A) < R(B)R(A)R(B)R(C)
23LEQR(C) = R(A) <= R(B)R(A)R(B)R(C)
24NOTR(B) = !R(A)R(A)R(B)
25JMPOda ugrik a kódbanHely
26CJPOda ugrik a kódban, ha a regiszter igazR(A)Hely
27CALMeghív egy funkciót, majd a kimenetet elmenti R(B)-beR(A)R(B)
28PSHEgy értéket belerak a következő funkció bemeneteihezR(A)
29RETVisszad egy értéketR(A)
30GETLekér egy értéket a táblából R(C) = R(A)[R(B)]R(A)R(B)R(C)
31SETBeállít egy értéket a táblának R(A)[R(B)] = R(C)R(A)R(B)R(C)
tanács

Ha az ENV-ből szeretnénk lekérni valamit akkor a GET-et kell használni, úgy, hogy R(A) = 0!