compilation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
compilation [2025/12/19 19:54] – créée rootcompilation [2026/08/02 12:32] (Version actuelle) root
Ligne 1: Ligne 1:
 ===== Compilation W en P-CODE ===== ===== Compilation W en P-CODE =====
-^ Source W ^ p-code ^ Remarque ^ + 
-| begin [nom]\\ background [nom]| ''PROG / BACK\\ BEXC\\ VERS <num3>\\ INCL <nom_fic_source>\\ SRCL <num_ligne>\\ PNAM [nom]'' | première instruction en assembleur\\ l'offset de BEXC sera calculé par l'assembleur\\ \\ \\ \\ [nom] du programme est optionnel | +//En construction !!// 
-| library([a[,b]]) | ''LIBR\\ BEXC\\ VERS <num3>\\ INCL <nom_fic_source>\\ PARM <a>\\ PARM <b>\\ SRCL <num_ligne>\\ '' | première instruction en assembleur\\ l'offset de BEXC sera calculé par l'assembleur\\ \\ \\ les paramètres [a[,b]] sont optionnels et variables | + 
-| except | ''SRCL <num_ligne>\\ EXCE'' | | +^Source W^p-code^Remarque| 
-| end | ''SRCL <num_ligne>\\ ENDP / ENDL'' | ENDP si PROG ou BACK, ENDL si LIBR | +|begin [nom] \\ background [nom]|''PROG / BACK \\ BEXC \\ VERS <num3> \\ INCL <nom_fic_source> \\ SRCL <num_ligne> \\ PNAM [nom]'' |première instruction en assembleur \\ l'offset de BEXC sera calculé par l'assembleur \\  \\  \\  \\ [nom] du programme est optionnel| 
-| sub <nom>([param1[,param2]]) | ''SRCL <num_ligne>\\ SUBR <nom>\\ BEXC\\ [PARM param1]\\ [PARM param2]'' | \\ adresse //ends// calculee par l'assembleur\\ adresse //except// calculée par l'assembleur | +|library([a[,b]])|''LIBR \\ BEXC \\ VERS <num3> \\ INCL <nom_fic_source> \\ PARM <a> \\ PARM <b> \\ SRCL <num_ligne>'' |première instruction en assembleur \\ l'offset de BEXC sera calculé par l'assembleur \\  \\  \\ les paramètres [a[,b]] sont optionnels et variables| 
-| endsub | ''SRCL <num_ligne>\\ ENDS'' | | +|except|''SRCL <num_ligne> \\ EXCE'' | | 
-| throw <num8> | ''SRCL <num_ligne>\\ THRW <num8>'' | | +|end|''SRCL <num_ligne> \\ ENDP / ENDL'' |ENDP si PROG ou BACK, ENDL si LIBR| 
-| catch | ''SRCL <num_ligne>\\ CATC'' | | +|sub <nom>([param1[,param2]])|''SRCL <num_ligne> \\ SUBR <nom> \\ BEXC \\ [PARM param1] \\ [PARM param2]'' | \\ adresse //ends// calculee par l'assembleur \\ adresse //except// calculée par l'assembleur| 
-| include %%"fichier%%"\\ include 'fichier' | ''SRCL <num_ligne>\\ INCL <fichier>\\ ... p-code du fichier ...\\ INCL'' | en assembleur, <fichier> sans les doubles-quotes/quotes \\ \\ \\ a la fin du traitement du fichier include | +|endsub|''SRCL <num_ligne> \\ ENDS'' | | 
-| part <num3> | ''SRCL <num_ligne>\\ PART <num3>'' | | +|throw <num8>|''SRCL <num_ligne> \\ THRW <num8>'' | | 
-| nop | ''SRCL <num_ligne>'' | | +|catch|''SRCL <num_ligne> \\ CATC'' | | 
-| declare x[,y] | ''SRCL <num_ligne>\\ DECL x\\ DECL y'' | nombre de déclarations variable | +|include <nowiki>"fichier</nowiki>" \\ include 'fichier'|''SRCL <num_ligne> \\ INCL <fichier> \\ … p-code du fichier … \\ INCL'' |en assembleur, <fichier> sans les doubles-quotes/quotes \\  \\  \\ a la fin du traitement du fichier include| 
-| loop\\ \\ ... p-code ...\\ break\\ \\ ... p-code ... \\ continue\\ \\ ... p-code ...\\ endloop | '':L\\ SRCL <num_ligne>\\ \\ SRCL <num_ligne>\\ JUMP :l\\ \\ SRCL <num_ligne>\\ JUMP :L\\ \\ SRCL <num_ligne>\\ JUMP :L\\ :l'' | :L et :l sont des marqueurs pour que l'assembleur calcule les adresse des sauts | +|part <num3>|''SRCL <num_ligne> \\ PART <num3>'' | | 
-| input ident1[.ident2][!ident3] | ''SRCL <num_ligne>\\ PVAR ident1\\ PVAH ident2\\ PVAI ident3\\ INPT'' | \\ Code assembleur pour une //Variable//+|nop|''SRCL <num_ligne>'' | | 
-| return | ''SRCL <num_ligne>\\ RETN'' | | +|declare x[,y]|''SRCL <num_ligne> \\ DECL x \\ DECL y'' |nombre de déclarations variable| 
-| returnon <expr> | ''SRCL <num_ligne>\\ <expr>\\ RETT'' | <expr> enchaîne les opérations sur la pile.\\ ''RETT'' dépile et si # 0 : //return// | +|loop \\  \\ … p-code … \\ break \\  \\ … p-code … \\ continue \\  \\ … p-code … \\ endloop|'':L \\ SRCL <num_ligne> \\  \\ SRCL <num_ligne> \\ JUMP :l \\  \\ SRCL <num_ligne> \\ JUMP :L \\  \\ SRCL <num_ligne> \\ JUMP :L \\ :l'' |:L et :l sont des marqueurs pour que l'assembleur calcule les adresse des sauts| 
-| break | ''SRCL <num_ligne>\\ <expr>\\ JUMP :l :f'' | '':l'' si loop, '':f'' si for | +|input ident1[.ident2][!ident3]|''SRCL <num_ligne> \\ PVAR ident1 \\ PVAH ident2 \\ PVAI ident3 \\ INPT'' | \\ Code assembleur pour une //Variable//
-| breakon <expr> | ''SRCL <num_ligne>\\ <expr>\\ JMPT :l :f'' | '':l'' si loop, '':f'' si for.\\ <expr> enchaîne les opérations sur la pile.\\ ''JMPT'' dépile et si # 0 : saut | +|return|''SRCL <num_ligne> \\ RETN'' | | 
-| continue | ''SRCL <num_ligne>\\ <expr>\\ JUMP :L :F'' | '':L'' si loop, '':F'' si for | +|returnon <expr>|''SRCL <num_ligne> \\ <expr> \\ RETT'' |<expr> enchaîne les opérations sur la pile. \\ ''RETT'' dépile et si # 0 : //return// | 
-| continueon <expr> | ''SRCL <num_ligne>\\ <expr>\\ JMPT :L :F'' | '':L'' si loop, '':F'' si for.\\ <expr> enchaîne les opérations sur la pile.\\ ''JMPT'' dépile et si # 0 : saut | +|break|''SRCL <num_ligne> \\ <expr> \\ JUMP :l :f'' |'':l'' si loop, '':f'' si for| 
-| do routine([x[,y[,z]]]) | ''SRCL <num_ligne>\\ CRAZ\\ <var z>\\ PSHA\\ <var y>\\ PSHA \\ <var x>\\ PSHA\\ <var routine>\\ CALL _'' | Appel //simple// d'une subroutine.\\ Les paramètres sont empilés //à l'envers//.\\ Chaque paramètre est un enchaînement de PVAR/PVAH/PVAI. | +|breakon <expr>|''SRCL <num_ligne> \\ <expr> \\ JMPT :l :f'' |'':l'' si loop, '':f'' si for. \\ <expr> enchaîne les opérations sur la pile. \\ ''JMPT'' dépile et si # 0 : saut| 
-| invoke <module>&<fonction>([x[,y[,z]]]) | ''SRCL <num_ligne>\\ CRAZ\\ <var y>\\ PSHA\\ <var x>\\ PSHA\\ MODL <module>@<fonction>'' | <module> maxi 21 cars. <fonction> maxi 23 cars.\\ Maxi. 3 paramètres, chacun est un enchaînement de PVAR/PVAH/PVAI.\\ TODO invoke | +|continue|''SRCL <num_ligne> \\ <expr> \\ JUMP :L :F'' |'':L'' si loop, '':F'' si for| 
-| call <fonction>([x[,y]])  | ''SRCL <num_ligne>\\ CRAZ\\ <var y>\\ PSHA\\ <var x>\\ PSHA\\ CLIB <fonction>'' | Chaque paramètre est un enchaînement de PVAR/PVAH/PVAI.\\ <fonction> maxi 255 cars.\\ TODO call | +|continueon <expr>|''SRCL <num_ligne> \\ <expr> \\ JMPT :L :F'' |'':L'' si loop, '':F'' si for. \\ <expr> enchaîne les opérations sur la pile. \\ ''JMPT'' dépile et si # 0 : saut| 
-| let <var> = <expr> | ''SRCL <num_ligne>\\ <expr>\\ <var>\\ POPV'' | <expr> enchaîne les opérations sur la pile\\ ou variable à affecter (PVAR/PVAH/PVAI)\\ ou new <classe>\\ <var> est un enchaînement de PVAR/PVAH/PVAI. | +|do routine([x[,y[,z]]])|''SRCL <num_ligne> \\ CRAZ \\ <var z> \\ PSHA \\ <var y> \\ PSHA \\ <var x> \\ PSHA \\ <var routine> \\ CALL _'' |Appel //simple// d'une subroutine. \\ Les paramètres sont empilés //à l'envers//. \\ Chaque paramètre est un enchaînement de PVAR/PVAH/PVAI.| 
-| echo / echonl <var> | ''SRCL <num_ligne>\\ <var>\\ WRIT / WRLN'' | <var> est un enchaînement de PVAR/PVAH/PVAI. | +|invoke <module>&<fonction>([x[,y[,z]]])|''SRCL <num_ligne> \\ CRAZ \\ <var y> \\ PSHA \\ <var x> \\ PSHA \\ MODL <module>@<fonction>'' |<module> maxi 21 cars. <fonction> maxi 23 cars. \\ Maxi. 3 paramètres, chacun est un enchaînement de PVAR/PVAH/PVAI. \\ TODO invoke| 
-| echo / echonl "chaine" 'chaine' | ''SRCL <num_ligne>\\ PVAT\\ DSET "chaine"\\ WRIT / WRLN'' | TODO avec <expr>+|call <fonction>([x[,y]])  |''SRCL <num_ligne> \\ CRAZ \\ <var y> \\ PSHA \\ <var x> \\ PSHA \\ CLIB <fonction>'' |Chaque paramètre est un enchaînement de PVAR/PVAH/PVAI. \\ <fonction> maxi 255 cars. \\ TODO call| 
-| delet <var> | ''SRCL <num_ligne>\\ <var>\\ DELE'' | <var> est un enchaînement de PVAR/PVAH/PVAI. | +|let <var> = <expr>|''SRCL <num_ligne> \\ <expr> \\ <var> \\ POPV'' |<expr> enchaîne les opérations sur la pile \\ ou variable à affecter (PVAR/PVAH/PVAI) \\ ou new <classe> \\ <var> est un enchaînement de PVAR/PVAH/PVAI.| 
-| if <expr> then / else\\ ... p-code ...\\ \\ \\ \\ elseif <expr> then / else\\ ... p-code ...\\ \\ \\ \\ \\ else\\ ... p-code ...\\ \\ \\ endif | '':I\\ SRCL <num_ligne>\\ <expr>\\ JMPF :E / JMPT :E\\ \\ JUMP :e\\ E:\\ SRCL <num_ligne>\\ <expr>\\ JMPF :E / JMPT :E\\ \\ JUMP :e\\ E:\\ SRCL <num_ligne>\\ \\ :e\\ SRCL <num_ligne>'' | Les //elseif// et //else// ne sont pas obligatoires.\\ Dès qu'une clause //else// apparaît, d'autres //elseif// ou //else// ne sont pas autorisés.\\ \\ Les JMPF :E et JMPT :E sautent au __premier__ :E à suivre du même //niveau//. | +|echo / echonl <var>|''SRCL <num_ligne> \\ <var> \\ WRIT / WRLN'' |<var> est un enchaînement de PVAR/PVAH/PVAI.| 
-| foreach <var1> in <var2> like <var3>\\ \\ \\ ... p-code ...\\ break\\ \\ ... p-code ... \\ continue\\ \\ ... p-code ...\\ endfor |''SRCL <num_ligne>\\ //TODO//\\ :F\\ \\ SRCL <num_ligne>\\ JUMP :f\\ \\ SRCL <num_ligne>\\ JUMP :F\\ \\ SRCL <num_ligne>\\ JUMP :F\\ :f'' | :F et :f sont des marqueurs pour que l'assembleur calcule les adresse des sauts | +|echo / echonl "chaine" 'chaine'|''SRCL <num_ligne> \\ PVAT \\ DSET "chaine" \\ WRIT / WRLN'' |TODO avec <expr>
-| class <name> = {<base>} | | | +|delet <var>|''SRCL <num_ligne> \\ <var> \\ DELE'' |<var> est un enchaînement de PVAR/PVAH/PVAI.| 
-| precision <expr> | | | +|if <expr> then / else \\ … p-code … \\  \\  \\  \\ elseif <expr> then / else \\ … p-code … \\  \\  \\  \\  \\ else \\ … p-code … \\  \\  \\ endif|'':I \\ SRCL <num_ligne> \\ <expr> \\ JMPF :E / JMPT :E \\  \\ JUMP :e \\ E: \\ SRCL <num_ligne> \\ <expr> \\ JMPF :E / JMPT :E \\  \\ JUMP :e \\ E: \\ SRCL <num_ligne> \\  \\ :e \\ SRCL <num_ligne>'' |Les //elseif// et //else// ne sont pas obligatoires. \\ Dès qu'une clause //else// apparaît, d'autres //elseif// ou //else// ne sont pas autorisés. \\  \\ Les JMPF :E et JMPT :E sautent au __premier__ :E à suivre du même //niveau//.| 
-| setsep <expr>,<expr> | | | +|foreach <var1> in <var2> like <var3> \\  \\  \\ … p-code … \\ break \\  \\ … p-code … \\ continue \\  \\ … p-code … \\ endfor|''SRCL <num_ligne> \\ //TODO// \\ :F \\  \\ SRCL <num_ligne> \\ JUMP :f \\  \\ SRCL <num_ligne> \\ JUMP :F \\  \\ SRCL <num_ligne> \\ JUMP :F \\ :f'' |:F et :f sont des marqueurs pour que l'assembleur calcule les adresse des sauts| 
-| free <var> | | | +|class <name> = {<base>}| | | 
-| <expr>\\ +\\ -\\ *\\ /\\ div\\ mod\\ abs\\ neg\\ int\\ frac\\ round\\ =\\ #\\ <\\ >\\ < =\\ > =\\ and\\ or\\ | \\ ''ADDN''\\ ''SBCN''\\ ''MULN''\\ ''DIVN''\\ ''DIVE''\\  ''MODN''\\ ''ABSN''\\ ''NEGN''\\ ''INTE''\\ ''FRAC''\\ ''ROUN''\\ ''COMP 1''\\ ''COMP 2''\\ ''COMP 3''\\ ''COMP 4''\\ ''COMP 5''\\ ''COMP 6''\\ ''COMP 7''\\ ''COMP 8''\\ | valeurs empilées |+|precision <expr>| | | 
 +|setsep <expr>,<expr>| | | 
 +|<expr> \\ + \\ - \\ * \\ / \\ div \\ mod \\ abs \\ neg \\ int \\ frac \\ round \\ = \\ # \\ < \\ > \\ < = \\ > = \\ and \\ or| \\ ''ADDN'' \\ ''SBCN'' \\ ''MULN'' \\ ''DIVN'' \\ ''DIVE'' \\ ''MODN'' \\ ''ABSN'' \\ ''NEGN'' \\ ''INTE'' \\ ''FRAC'' \\ ''ROUN'' \\ ''COMP 1'' \\ ''COMP 2'' \\ ''COMP 3'' \\ ''COMP 4'' \\ ''COMP 5'' \\ ''COMP 6'' \\ ''COMP 7'' \\ ''COMP 8'' |valeurs empilées| 
 + 
  • compilation.1766174084.txt.gz
  • Dernière modification : 2025/12/19 19:54
  • de root