referencepcode

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
referencepcode [2026/02/22 09:24] rootreferencepcode [2026/08/02 12:31] (Version actuelle) root
Ligne 1: Ligne 1:
 ===== Instructions p-code W ===== ===== Instructions p-code W =====
 +
 Toutes les instructions p-code ont une mnémonique de 4 caractères. D'éventuels paramètres peuvent se trouver à la suite.\\ Toutes les instructions p-code ont une mnémonique de 4 caractères. D'éventuels paramètres peuvent se trouver à la suite.\\
 Les paramètres possibles sont : Les paramètres possibles sont :
 +
   * d1 : nombre non signé sur 8 bits, de 0 à 255   * d1 : nombre non signé sur 8 bits, de 0 à 255
   * d3 : nombre non signé sur 24 bits, de 0 à 16777215 (en big-endian)   * d3 : nombre non signé sur 24 bits, de 0 à 16777215 (en big-endian)
   * d8 : nombre non signé sur 64 bits (en big-endian)   * d8 : nombre non signé sur 64 bits (en big-endian)
-  * string : chaîne de caractères (mono-octet)+  * string : chaîne de caractères (mono-octet), précédée de sa longueur, soit sur 1 octet (d1), soit sur 3 octets (d3) 
 Concernant la syntaxe assembleur, les paramètres ont la signification suivante : Concernant la syntaxe assembleur, les paramètres ont la signification suivante :
 +
   * <num3> : numérique non signé sur 3 chiffres   * <num3> : numérique non signé sur 3 chiffres
   * <num8> : numérique non signé sur 8 chiffres   * <num8> : numérique non signé sur 8 chiffres
Ligne 13: Ligne 17:
   * <strmod> : chaîne de 3 à 45 caractères   * <strmod> : chaîne de 3 à 45 caractères
   * <dquote> : chaîne de 0 à 255 caractères, entourée de double quote ''"''   * <dquote> : chaîne de 0 à 255 caractères, entourée de double quote ''"''
-  * <oper> : chaîne valant ''EQ'' ''NE'' ''LT'' ''GT'' ''LE'' ''GE'' ''AND'' ''OR'' ''NOT'' +  * <oper> : chaîne valant ''EQ''''NE''''LT''''GT''''LE''''GE''''AND''''OR''''NOT'' 
-  * <operdyn> : chaîne valant ''EQ'' ''NE'' ''LT'' ''GT'' ''LE'' ''GE'' +  * <operdyn> : chaîne valant ''EQ''''NE''''LT''''GT''''LE''''GE'' 
-  * <varsys> : chaîne de caractères contenant le nom d'une [[w:instr:varsys|variable système]] +  * <varsys> : chaîne de caractères contenant le nom d'une [[:reference#varsys|variable système]] 
-Gestion des [[w:pcode:addr|adresses et sauts]].\\ + 
-\\ +Gestion des adresses et sauts : //en construction//. \\  \\ Dans l'ordre de la traduction numérique de chaque instruction. La taille donne le nombre d'octets pris par chaque instruction. 
-Dans l'ordre de la traduction numérique de chaque instruction. La taille donne le nombre d'octets pris par chaque instruction. + 
-^ Code ^ Instruction ^ Paramètres ^ Taille ^ Libellé ^ Syntaxe assembleur ^ +^Code^Instruction^Paramètres^Taille^Libellé^Syntaxe assembleur| 
-| 000 | VERS | d1 | 2 | Ne fait rien, donne la version du compilé qui s'exécute | ''VERS <num3>''+|000|VERS|d1|2|Ne fait rien, donne la version du compilé qui s'exécute|''VERS <num3>''
-| 001 | JUMP | d3 | 4 | Saut a l'adresse d3, en relatif par rapport au début du bloc en cours : programme ou sub | | +|001|JUMP|d3|4|Saut a l'adresse d3, en relatif par rapport au début du bloc en cours : programme ou sub|''JUMP'' 
-| 002 | DECL | d1 string | 2+d1 | Déclare une variable dont le nom est <string> et de longueur <d1>. La longueur <d1> du nom de la variable est [1 , 24] | ''DECL <string>''+|002|DECL|d1 string|2+d1|Déclare une variable dont le nom est <string> et de longueur <d1>. La longueur <d1> du nom de la variable est [1 , 24]|''DECL <string>''
-| 003 | SRCL | d3 | 4| Indique le début du code correspondant à la ligne <d3> du code source W, pour le fichier en cours (principal / include). Sert de point d'arrêt en mode debug. N° de ligne pris en compte dans le calcul de la couverture de code | ''SRCL <num8>''+|003|SRCL|d3|4|Indique le début du code correspondant à la ligne <d3> du code source W, pour le fichier en cours (principal / include). Sert de point d'arrêt en mode debug. N° de ligne pris en compte dans le calcul de la couverture de code|''SRCL <num8>''
-| 004 | BEXC | d3 | 4 | Donne l'adresse du bloc exception, juste après instruction EXCE, en relatif a partir de BEXC | ''BEXC''+|004|BEXC|d3|4|Donne l'adresse du bloc exception, juste après instruction EXCE, en relatif a partir de BEXC|''BEXC''
-| 005 | EXCE | | 1 | Marque la fin du bloc de traitement et le début du bloc exception, du programme ou sous-programme en cours. Si l'exécuteur de code arrive à cette instruction sans exception, cela force le retour à l'appelant | ''EXCE''+|005|EXCE| |1|Marque la fin du bloc de traitement et le début du bloc exception, du programme ou sous-programme en cours. Si l'exécuteur de code arrive à cette instruction sans exception, cela force le retour à l'appelant|''EXCE''
-| 006 | CATC | | 1 | Efface l'exception en cours, dans le bloc exception uniquement, et force le retour à l'appelant | ''CATC''+|006|CATC| |1|Efface l'exception en cours, dans le bloc exception uniquement, et force le retour à l'appelant|''CATC''
-| 007 | THRW | d3 | 4 | Lève une exception de n° <d3>. Dans le bloc traitement, provoque le saut au début du bloc exception. Dans le bloc exception, remplace l'exception courante et force le retour à l'appelant | ''THRW <num8>''+|007|THRW|d3|4|Lève une exception de n° <d3>. Dans le bloc traitement, provoque le saut au début du bloc exception. Dans le bloc exception, remplace l'exception courante et force le retour à l'appelant|''THRW <num8>''
-| 008 | PART | d1 | 2 | Définit le numéro de la portion de code en cours | ''PART <num3>''+|008|PART|d1|2|Définit le numéro de la portion de code en cours|''PART <num3>''
-| 009 | RETN | | 1 | Force le retour à l'appelant, valide dans le bloc de traitement et le bloc exception | ''RETN''+|009|RETN| |1|Force le retour à l'appelant, valide dans le bloc de traitement et le bloc exception|''RETN''
-| 010 | CALL | d1 string | 2+d1 | TODO | | +|010|CALL|d1 string|2+d1|Appelle la //sub// <string>|''CALL _'' \\ ''CALL <string>'' 
-| 011 | PARM | d1 string | 2+d1 | Dépile dans la call stack un pointeur et créé la variable PARAM correspondante dans la hash locale sur ce nom pour ce pointeur. A utiliser avec l'instruction de déclaration d'une sub SUBR | ''PARM <string>''+|011|PARM|d1 string|2+d1|Dépile dans la call stack un pointeur et créé la variable PARAM correspondante dans la hash locale sur ce nom pour ce pointeur. A utiliser avec l'instruction de déclaration d'une sub SUBR|''PARM <string>''
-| 012 | SUBR | d1 string d3 | 5+d1 | Déclaration d'une sub de nom <string> (remplace DECL pour les sub) et force un saut dans le code après le ENDS, en relatif par rapport à l'instruction SUBR | ''SUBR <string>''+|012|SUBR|d1 string d3|5+d1|Déclaration d'une sub de nom <string> (remplace DECL pour les sub) et force un saut dans le code après le ENDS, en relatif par rapport à l'instruction SUBR|''SUBR <string>''
-| 013 | COMP | d1 | 2 | Compare les 2 éléments de la pile, les dépile puis empile 1 si le résultat de la comparaison est vrai, 0 si faux. Les opérateurs de comparaisons sont, de 1 à 9 => ''%%= # < > <= >= and or not%%'' | ''COMP <oper>''+|013|COMP|d1|2|Compare les 2 éléments de la pile, les dépile puis empile 1 si le résultat de la comparaison est vrai, 0 si faux. Les opérateurs de comparaisons sont, de 1 à 9 ⇒ ''<nowiki>= # < > <= >= and or not</nowiki>'' |''COMP <oper>''
-| 014 | JMPF | d3 | 4 | Force un saut dans le code si la dernière comparaison était //fausse// => l'élément de la pile = 0. La valeur est dépilée. Le saut (d3) est en relatif par rapport au début du programme ou sous-programme en cours | | +|014|JMPF|d3|4|Force un saut dans le code si la dernière comparaison était //fausse// ⇒ l'élément de la pile = 0. La valeur est dépilée. Le saut (d3) est en relatif par rapport au début du programme ou sous-programme en cours|''JMPF'' 
-| 015 | JMPT | d3 | 4 | Force un saut dans le code si la dernière comparaison était //vraie// => même comportement sinon que JMPF | | +|015|JMPT|d3|4|Force un saut dans le code si la dernière comparaison était //vraie// ⇒ même comportement sinon que JMPF|''JMPT'' 
-| 016 | ADDN | | 1 | Additionne les 2 éléments de la pile, dépile les 2 éléments et empile le résultat. Si une valeur Dynamic est empilée, un conversion numérique est essayée, avec levée d'exception si la conversion n'est pas possible (valeur non numérique) | ''ADDN''+|016|ADDN| |1|Additionne les 2 éléments de la pile, dépile les 2 éléments et empile le résultat. Si une valeur Dynamic est empilée, un conversion numérique est essayée, avec levée d'exception si la conversion n'est pas possible (valeur non numérique)|''ADDN''
-| 017 | SBCN | | 1 | Soustrait les 2 éléments de la pile, comportement identique à ADDN | ''SBCN''+|017|SBCN| |1|Soustrait les 2 éléments de la pile, comportement identique à ADDN|''SBCN''
-| 018 | MULN | | 1 | Multiplie les 2 éléments de la pile, comportement identique à ADDN | ''MULN''+|018|MULN| |1|Multiplie les 2 éléments de la pile, comportement identique à ADDN|''MULN''
-| 019 | DIVN | | 1 | Divise les 2 éléments de la pile, comportement identique à ADDN, exception si diviseur nul | ''DIVN''+|019|DIVN| |1|Divise les 2 éléments de la pile, comportement identique à ADDN, exception si diviseur nul|''DIVN''
-| 020 | INTE | | 1 | Prend la valeur entière de la pile, dépile et empile le résultat, conversion essayée si la valeur est un Dynamic | ''INTE''+|020|INTE| |1|Prend la valeur entière de la pile, dépile et empile le résultat, conversion essayée si la valeur est un Dynamic|''INTE''
-| 021 | FRAC | | 1 | Prend la valeur fractionnaire de la pile, comportement identique à INTE | ''FRAC''+|021|FRAC| |1|Prend la valeur fractionnaire de la pile, comportement identique à INTE|''FRAC''
-| 022 | NEGN | | 1 | Prend la valeur entière de la pile, comportement identique à INTE | ''NEGN''+|022|NEGN| |1|Prend la valeur entière de la pile, comportement identique à INTE|''NEGN''
-| 023 | ABSN | | 1 | Prend la valeur entière de la pile, comportement identique à INTE | ''ABSN''+|023|ABSN| |1|Prend la valeur entière de la pile, comportement identique à INTE|''ABSN''
-| 024 | MODL | d1 string | 2+d1 | Appel d'un module externe (dlfcn.h module.o ayant un seul point d'entrée), les paramètres sont pris de la call stack (maximum 3) ; la chaine doit être de la forme => module@fonction | ''MODL <strmod>''+|024|MODL|d1 string|2+d1|Appel d'un module externe (dlfcn.h module.o ayant un seul point d'entrée), les paramètres sont pris de la call stack (maximum 3) ; la chaine doit être de la forme ⇒ module@fonction|''MODL <strmod>''
-| 025 | PSHC | d8 | 9 | Pousse sur la pile la constante sur 64 bits d8 (en big endian) | ''PSHC <number>''+|025|PSHC|d8|9|Pousse sur la pile la constante sur 64 bits d8 (en big endian)|''PSHC <number>''
-| 026 | PSHV | | 1 | Empile la variable en cours //ad_var// | ''PSHV''+|026|PSHV| |1|Empile la variable en cours //ad_var// |''PSHV''
-| 027 | POPV | | 1 | Dépile dans la variable en cours //ad_var// | ''POPV''+|027|POPV| |1|Dépile dans la variable en cours //ad_var// |''POPV''
-| 028 | PVAR | d1 string | 2+d1 | Met dans //ad_var// l'adresse de la variable, soit de la hash locale soit de la hash globale (+ gestion mode "typeof") | ''PVAR <string>''+|028|PVAR|d1 string|2+d1|Met dans //ad_var// l'adresse de la variable, soit de la hash locale soit de la hash globale (+ gestion mode "typeof")|''PVAR <string>''
-| 029 | PVAH | d1 string | 2+d1 | Met dans //ad_var// l'adresse de la variable lue de la hashtable pointée elle aussi par //ad_var// (+ gestion mode "typeof") | ''PVAH <string>''+|029|PVAH|d1 string|2+d1|Met dans //ad_var// l'adresse de la variable lue de la hashtable pointée elle aussi par //ad_var// (+ gestion mode "typeof")|''PVAH <string>''
-| 030 | WRIT | | 1 | Ecrit dans la console (sortie standard) le contenu de la variable pointée par //ad_var// (Number ou Dynamic), ne fait rien si programme //demon// | ''WRIT''+|030|WRIT| |1|Ecrit dans la console (sortie standard) le contenu de la variable pointée par //ad_var// (Number ou Dynamic), ne fait rien si programme //demon// |''WRIT''
-| 031 | WRLN | | 1 | Identique à WRIT avec de plus un saut de ligne écrit à la fin | ''WRLN''+|031|WRLN| |1|Identique à WRIT avec de plus un saut de ligne écrit à la fin|''WRLN''
-| 032 | DSET | d1 string | 2+d1 | Affecte la chaine <string> à la variable pointée par //ad_var// (maxi. 255 caractères) | ''DSET <dquote>''+|032|DSET|d1 string|2+d1|Affecte la chaine <string> à la variable pointée par //ad_var// (maxi. 255 caractères)|''DSET <dquote>''
-| 033 | DEXT d1 string 2+d1 | Correspond à <ad_var>{pile,pile} : extrait de la chaine pointée par //ad_var// l'attribut issu de la pile, valeur issue de la pile. Si une valeur de pile vaut 0, le contenu complet calculé précédemment est gardé. Si <d1> = 0, le résultat est mis dans //int_dynamic// sinon dans la variable de nom <string> | ''DEXT _''\\ ''DEXT <string>''+|033|DEXV| |1|Correspond à <ad_var>{pile, pile} pile (suite PVAR)|''DEXV''
-| 034 | DCMP | op d1 string | 3+d1 | Compare la chaine de la variable pointée par //ad_var// avec le contenu de la variable de nom <string> (op: %%= # < > <= >=%%, 1 a 6). Le résultat est empilé, 1 si condition vraie, 0 si fausse | ''DCMP <operdyn> <string>''+|034|DCMP|op d1 string|3+d1|Compare la chaine de la variable pointée par //ad_var// avec le contenu de la variable de nom <string> (op: <nowiki>= # < > <= >=</nowiki>, 1 a 6). Le résultat est empilé, 1 si condition vraie, 0 si fausse|''DCMP <operdyn> <string>''
-| 035 | DSTO | d1 string | 2+d1 | Correspond à <ad_var>{pile,pile} = variable <nom>. Si <d1> = 0, le contenu est lu de //int_dynamic//. Si une valeur de pile vaut 0, le contenu complet calculé précédemment est gardé. | ''DSTO _''\\ ''DSTO <string>''+|035|DSTO|d1 string|2+d1|Correspond à <ad_var>{pile,pile} = variable <nom>. Si <d1> = 0, le contenu est lu de //int_dynamic//. Si une valeur de pile vaut 0, le contenu complet calculé précédemment est gardé.|''DSTO _'' \\ ''DSTO <string>''
-| 036 | VLET | d1 string | 2+d1 | Affectation simple de variable. La variable de nom <string> reçoit la valeur de celle pointée par //ad_var//. Si <d1> = 0, l'affectation va dans //int_dynamic//. | ''VLET _''\\ ''VLET <string>''+|036|LETV|d1 string|2+d1|Affectation simple de variable. La variable de nom <string> reçoit la valeur de celle pointée par //ad_var//. Si <d1> = 0, l'affectation va dans //int_dynamic//.|''LETV _'' \\ ''LETV <string>''
-| 037 | DCAT | d1 string | 2+d1 | Concaténation : à la variable de nom <string> est concaténée la valeur de celle pointée par //ad_var//. Si <d1> = 0, la concaténation se fait dans //int_dynamic//. | ''DCAT _''\\ ''DCAT <string>''+|037|DCAT|d1 string|2+d1|Concaténation : à la variable de nom <string> est concaténée la valeur de celle pointée par //ad_var//. Si <d1> = 0, la concaténation se fait dans //int_dynamic//.|''DCAT _'' \\ ''DCAT <string>''
-| 038 | DTON | | 1 | Convertit la variable pointée par //ad_var// en numérique et l'empile | ''DTON''+|038|DTON| |1|Convertit la variable pointée par //ad_var// en numérique et l'empile|''DTON''
-| 039 | NTOD | | 1 | Dépile et convertit le nombre en chaine, mis dans //ad_var//. | ''NTOD''+|039|NTOD| |1|Dépile et convertit le nombre en chaine, mis dans //ad_var//.|''NTOD''
-| 040 | DELE | d1 string 2+d1 | Supprime la variable de nom <string> de la hash locale/globale et effectue les libérations associées (sauf si objet/sub) | ''DELE <string>''+|040|DELE| |1|Supprime la variable <ad_var> de la hash locale/globale et effectue les libérations associées (sauf si objet/sub)|''DELE''
-| 041 | HLET | | 1 | Affecte à la variable pointée par //ad_var// une hashtable vierge. Le modulo et séparateur sont dans la pile, si 0 une valeur par défaut est utilisée. | ''HLET''+|041|HLET| |1|Affecte à la variable pointée par //ad_var// une hashtable vierge. Le modulo et séparateur sont dans la pile, si 0 une valeur par défaut est utilisée.|''HLET''
-| 042 | CLAS | d1 string | 2+d1 | Créé une classe globale de nom <string> héritée de la classe trouvée sur la pile (avec dépilage). <color #ed1c24>TODO</color> | | +|042|CLAS|d1 strin1 d1 string2|2+d1|Créé une classe globale de nom <string1> héritée de la classe de nom <string2>Si <d1de <string2= 0, la classe //Base// comme classe mère est prise par défaut.|''CLAS <string1> <string2>'' 
-| 043 | NLET | d1 string | 2+d1 | Instancie un objet, global, de la classe de nom <string>. La variable pointée par //ad_var// prend le type VAR_PARAM et pointe sur l'objet créé. | ''NLET <string>''+|043|NLET|d1 string|2+d1|Instancie un objet, global, de la classe de nom <string>. La variable pointée par //ad_var// prend le type VAR_PARAM et pointe sur l'objet créé.|''NLET <string>''
-| 044 | INCL | d1 string | 2+d1 | Include dans le source W : indique un changement de fichier source en cours (utile au debugger). Si <d1> = 0, correspond à un retour d'include. | ''INCL <string>''\\ ''INCL''+|044|INCL|d1 string|2+d1|Include dans le source W : indique un changement de fichier source en cours (utile au debugger). Si <d1> = 0, correspond à un retour d'include.|''INCL <string>'' \\ ''INCL''
-| 045 | PNAM | d1 string | 2+d1 | Nom du programme principal (PROG ou BACK). | ''PNAM <string>''\\ ''PNAM''+|045|PNAM|d1 string|2+d1|Nom du programme principal (PROG ou BACK).|''PNAM <string>'' \\ ''PNAM''
-| 046 | PSH0 | | 1 | Empile la constante 0 | ''PSH0''+|046|PSH0| |1|Empile la constante 0|''PSH0''
-| 047 | PSH1 | | 1 | Empile la constante 1 | ''PSH1''+|047|PSH1| |1|Empile la constante 1|''PSH1''
-| 048 | PSH2 | | 1 | Empile la constante 2 | ''PSH2''+|048|PSH2| |1|Empile la constante 2|''PSH2''
-| 049 | PSH3 | | 1 | Empile la constante 3 | ''PSH3''+|049|PSH3| |1|Empile la constante 3|''PSH3''
-| 050 | PSH4 | | 1 | Empile la constante 4 | ''PSH4''+|050|PSH4| |1|Empile la constante 4|''PSH4''
-| 051 | PSH5 | | 1 | Empile la constante 5 | ''PSH5''+|051|PSH5| |1|Empile la constante 5|''PSH5''
-| 052 | PSH6 | | 1 | Empile la constante 6 | ''PSH6''+|052|PSH6| |1|Empile la constante 6|''PSH6''
-| 053 | PSH7 | | 1 | Empile la constante 7 | ''PSH7''+|053|PSH7| |1|Empile la constante 7|''PSH7''
-| 054 | PSH8 | | 1 | Empile la constante 8 | ''PSH8''+|054|PSH8| |1|Empile la constante 8|''PSH8''
-| 055 | PSH9 | | 1 | Empile la constante 9 | ''PSH9''+|055|PSH9| |1|Empile la constante 9|''PSH9''
-| 056 | PSHA | d1 | 2 | Empile la @VARSYS de [[w:instr:varsys|code]] d1 | ''PSHA <varsys>''+|056|PSHA|d1|2|Empile la @VARSYS de [[:reference#varsys|code]] d1|''PSHA <varsys>''
-| 057 | PROG | | 1 | Indique que le binaire est un programmepremière instruction du binaire | ''PROG''+|057|SQRT| |1|Calcule le racine carre de la piledépile et empile le résultat|''SQRT''
-| 058 | BACK | | 1 | Indique un binaire exécutable en mode //demon//première instruction en alternative à PROG | ''BACK''+|058|IEXP| |1|Puissance entiere a partir des 2 elements de la piledépile les 2 nombres et empile le résultat|''IEXP''
-| 059 | CLIB | d1 string | 2+d1 | Appel de la library de nom <string>. Les paramètres sont pris de la call stack. ''<string>.wp'' est le nom du fichier binaire qui est chargé en mémoire (binaire W) <color #ed1c24>TODO</color>+|059|CLIB|d1 string|2+d1|Appel de la library de nom <string>. Les paramètres sont pris de la call stack. ''<string>.wp'' est le nom du fichier binaire qui est chargé en mémoire (binaire W)|''CLIB <string>'' 
-| 060 | PVAI | d1 string | 2+d1 | Met dans //ad_var// l'adresse de la variable lue de la hashtable pointée elle aussi par //ad_var//, mais via une indirection : la variable de nom <string> donne le //vrai// nom de la variable à chercher (+ gestion mode "typeof") | ''PVAI <string>''+|060|PVAI|d1 string|2+d1|Met dans //ad_var// l'adresse de la variable lue de la hashtable pointée elle aussi par //ad_var//, mais via une indirection : la variable de nom <string> donne le //vrai// nom de la variable à chercher (+ gestion mode "typeof")|''PVAI <string>''
-| 061 | DIVE | | 1 | Divise les 2 éléments de la pile en gardant la partie entière uniquement, comportement identique à ADDN, exception si diviseur nul | ''DIVE''+|061|DIVE| |1|Divise les 2 éléments de la pile en gardant la partie entière uniquement, comportement identique à ADDN, exception si diviseur nul|''DIVE''
-| 062 | MODN | | 1 | Divise les 2 éléments de la pile en gardant le reste uniquement (modulo), comportement identique à ADDN, exception si diviseur nul | ''MODN''+|062|MODN| |1|Divise les 2 éléments de la pile en gardant le reste uniquement (modulo), comportement identique à ADDN, exception si diviseur nul|''MODN''
-| 063 | INPT | | 1 | Réalise une saisie au clavier (entrée standard) et met le résultat dans la variable pointée par //ad_var//, convertie en chaine | ''INPT''+|063|INPT| |1|Réalise une saisie au clavier (entrée standard) et met le résultat dans la variable pointée par //ad_var//, convertie en chaine|''INPT''
-| 064 | PVAT | | 1 | Met dans le pointeur de variable //ad_var// l'adresse d'une variable temporaire //_tmp999// automatique, pour accès immédiat dans l'instruction suivante | ''PVAT''+|064|PVAT| |1|Met dans le pointeur de variable //ad_var// l'adresse d'une variable temporaire //_tmp999// automatique, pour accès immédiat dans l'instruction suivante|''PVAT''
-| 065 | TYPO | | 1 | Fait passer le programme en cours en mode //typeof//, pour ne pas générer d'exception si une variable est inconnue dans les syntaxes du type ''?var.var2!var3. etc.''. Renvoie le typeof. Attention : entre les instructions TYPO et PSHT ne doivent se trouver que des instructions PVAR et //n fois// PVAH/PVAI | ''TYPO''+|065|TYPO| |1|Fait passer le programme en cours en mode //typeof//, pour ne pas générer d'exception si une variable est inconnue dans les syntaxes du type ''?var.var2!var3. etc.''. Renvoie le typeof. Attention : entre les instructions TYPO et PSHT ne doivent se trouver que des instructions PVAR et //n fois// PVAH/PVAI|''TYPO''
-| 066 | PSHT | | 1 | Empile le type de la variable pointée par //ad_var// (typeof), -1 si inconnu. Cette instruction //annule// le mode //typeof// (annulation a faire aussi quand exception autre que var inconnue) | ''PSHT''+|066|PSHT| |1|Empile le type de la variable pointée par //ad_var// (typeof), -1 si inconnu. Cette instruction //annule// le mode //typeof// (annulation a faire aussi quand exception autre que var inconnue)|''PSHT''
-| 067 | CRAZ | | 1 | Vide la //call stack// servant au passage des paramètres avant les instruction CALL CLIB MODL | ''CRAZ''+|067|CRAZ| |1|Vide la //call stack// servant au passage des paramètres avant les instruction CALL CLIB MODL|''CRAZ''
-| 068 | CPSH | d1 string | 2+d1 | Empile dans la call stack la variable de nom <string>. A utiliser avant les instructions CALL CLIB MODL | ''CPSH <string>''+|068|CPAN|d1 string|2+d1|Empile dans la call stack la var <ad_var> en nommant le parametre <string> (a utiliser avant CALL/CLIB/MODL)|''CPAN <string>''
-| 069 | RETT | | 1 | Dépile et si la valeur est # 0 (vrai), force le retour à l'appelant, valide dans le bloc de traitement et le bloc exception | ''RETT''+|069|RETT| |1|Dépile et si la valeur est # 0 (vrai), force le retour à l'appelant, valide dans le bloc de traitement et le bloc exception|''RETT''
-|070|SELE|       |1 |initialise la var de ad_var pour foreach dynamic/hashtable| ''''+|070|SELE|   |1|initialise la var de ad_var pour foreach dynamic/hashtable|''SELE''
-|071|RNXT|       |1 |lit l'item suivant de ad_var et met le resultat dans la var empilee dans la call stak (depilage au passage)| ''''+|071|RNXT|   |1|lit l'item suivant de ad_var et met le résultat dans la var empilée dans la call stak (dépilage au passage)|''RNXT''
-|072|CPHA|       |1 |empile dans la call stack la var ad_var en param| ''''+|072|CPHA|   |1|empile dans la call stack la var ad_var en param|''CPHA''
-|073|PHDE|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash la var <nom> avec le contenu de la pile (number/dynamic) - let| ''''+|073|PHDE|d1 string|2+d1|enchainement PVAH/PVAI, en dernier crée/remplace dans la hash la var <string> avec le contenu de la pile (number/dynamic) - let|''PHDE <string>''
-|074|PIDE|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash (avec indirection) la var <nom> avec le contenu de la pile (number/dynamic) - let| ''''+|074|PIDE|d1 string|2+d1|enchainement PVAH/PVAI, en dernier crée/remplace dans la hash (avec indirection) la var <string> avec le contenu de la pile (number/dynamic) - let|''PIDE <string>''
-|075|PHDH|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash la var hash <nom> (la pile contient modulo/separateur) - let| ''''+|075|PHDH|d1 string|2+d1|enchainement PVAH/PVAI, en dernier crée/remplace dans la hash la var hash <string> (la pile contient modulo/séparateur) - let|''PHDH <string>''
-|076|PIDH|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash (avec indirection) la var hash <nom> (la pile contient modulo/separateur) - let| ''''+|076|PIDH|d1 string|2+d1|enchainement PVAH/PVAI, en dernier crée/remplace dans la hash (avec indirection) la var hash <string> (la pile contient modulo/séparateur) - let|''PIDH <string>''
-|077|PHDO|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cherche la sub <nom> dans la classe, si pas trouve dans les classes meres| ''''+|077|PHDO|d1 string|2+d1|enchainement PVAH/PVAI, en dernier cherche la sub <string> dans la classe, si pas trouve dans les classes mères|''PHDO <string>''
-|078|PIDO|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cherche la sub <nom> (avec indirection) dans la classe, si pas trouve dans les classes meres| ''''+|078|PIDO|d1 string  |2+d1|enchainement PVAH/PVAI, en dernier cherche la sub <string> (avec indirection) dans la classe, si pas trouve dans les classes mères|''PIDO <string>''
-|079|PHDS|lg nom d3   |5+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash la sub <nom>| ''''+|079|PHDS|d1 string d3  |5+d1|enchainement PVAH/PVAI, en dernier crée/remplace dans la hash la sub <string>|''PHDS <string> <d3>''
-|080|PIDS|lg nom d3   |5+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash (avec indirection) la sub <nom>| ''''+|080|PIDS|d1 string d3  |5+d1|enchainement PVAH/PVAI, en dernier crée/remplace dans la hash (avec indirection) la sub <string>|''PIDS <string> <d3>''
-|081|TYPE|       |1 |trouve le type de l'element de la pile num/str/vide, depile + met le resultat| ''''+|081|TYPE|   |1|trouve le type de l'élément de la pile num/str/vide, dépile + met le résultat|''TYPE''
-|082|ROUN|       |1 |"arrondi l'element pile2 sur le nombre de decimales pile1, depile et arrondi l'element de la pile\\ si nb decimales n'est pas 0 1 2 3 4 5, utilise la precision courante| ''''+|082|ROUN|   |1|arrondi l'élément pile2 sur le nombre de décimales pile1, dépile et arrondi l'élément de la pile \\ si nb décimales n'est pas 0 1 2 3 4 5, utilise la précision courante|''ROUN''
-|083|LENG|       |1 |calcule la longueur de l'element de la pile (comme si chaine), depile + met le resultat| ''''+|083|LENG|   |1|calcule la longueur de l'élément de la pile (comme si chaine), dépile + met le résultat|''LENG''
-|084|COUN|       |1 |compte le nombre de caractere (1er de pile2) trouve dans pile1, depile + met le resultat| ''''+|084|COUN|   |1|compte le nombre de caractère (1er de pile2) trouve dans pile1, dépile + met le résultat|''COUN''
-|085|DCOF|       |1 |dcount(var)| ''''+|085|DCOF|   |1|dcount(var), comme le nombre de champs, en prenant le séparateur courant|''DCOF''
-|086|FIEL|       |1 |"fonction ""field"" : chercher dans la chaine pile1, avec le caractere pile2 (1er car), le champ no pile3, depile + met le resultat| ''''+|086|FIEL|   |1|"fonction _ckgedit_QUOT__ckgedit>field_ckgedit_QUOT__ckgedit> : chercher dans la chaine pile1, avec le caractère pile2 (1er car), le champ no pile3, dépile + met le résultat|''FIEL''
-|087|INDX|       |1 |index(var, search, occ)| ''''+|087|INDX|   |1|index(var, search, occ)|''INDX''
-|088|SRCH|       |1 |search(var) search string in field| ''''+|088|SRCH|   |1|search(var) search string in field|''SRCH''
-|089|CHNG|       |1 |change(var, cherche, remplace)| ''''+|089|CHNG|   |1|change(var, cherche, remplace)|''CHNG''
-|090|FMTA|       |1 |"format ""alignment"" (left right center)"| ''''+|090|FMTA|   |1|format alignment (left right center)|''FMTA''
-|091|INSE|       |1 |insert(var, chaine, field)| ''''+|091|INSE|   |1|insert(var, chaine, field)|''INSE''
-|092|REMV|       |1 |remove(var, field)| ''''+|092|REMV|   |1|remove(var, field)|''REMV''
-|093|TONU|       |1 |tonum, convertit l'element de la pile en numerique, exception si non numerique| ''''+|093|TONU|   |1|tonum : force la conversion de l'élément de la pile en numérique, exception si non numérique|''TONU''
-|094|TOST|       |1 |tostring, convertit l'element de la pile en chaine| ''''+|094|TOST|   |1|tostring : force la conversion de l'élément de la pile en chaine|''TOST''
-|095|CCAT|       |1 |"concat "":"", concatene pile1 et pile2, depile 2 fois + met le resultat"| ''''+|095|CCAT|   |1|concat '':'' : concatène pile1 et pile2, dépile 2 fois + met le résultat"|''CCAT''
-|096|SSTR|       |1 |"substring ou notation [9,9] : prend la substring de la pile + met le resultat (base 0 pour debut, longueur\\ si 1 seul param : part de la fin (que longueur))| ''''+|096|SSTR|   |1|substring ou notation [9,9] : prend la substring de la pile + met le résultat (base 0 pour début, longueur si 1 seul param : part de la fin (que longueur))|''SSTR''
-|097|SSEP|       |1 |set sep : prend les separateur de la pile + depile les 2 + maj separateur| ''''+|097|SSEP|   |1|set sep : prend les séparateur de la pile + dépile les 2 + maj séparateur|''SSEP''
-|098|FLDF|       |1 |idem FIEL mais utilise le separateur @currfm (pour faire x{1})| ''''+|098|FLDF|   |1|idem FIEL mais utilise le séparateur @currfm (pour faire x{1})|''FLDF''
-|099|FLDS|       |1 |idem FIEL mais utilise le separateur @currfm et @currvm (pour faire x{1,2})| ''''+|099|FLDS|   |1|idem FIEL mais utilise le séparateur @currfm et @currvm (pour faire x{1,2})|''FLDS''
-|100|DCOS|       |1 |dcount(var, numchamp)| ''''+|100|DCOS|   |1|dcount(var, numchamp)|''DCOS''
-|101|FMTT|       |1 |"format ""trim"""| ''''+|101|FMTT|   |1|Format //trim// |''FMTT''
-|102|FMTS|       |1 |"format ""surround"""| ''''+|102|FMTS|   |1|Format //surround// |''FMTS''
-|103|SCHS|       |1 |search(var, numField) search string in subfield of the field given| ''''+|103|SCHS|   |1|search(var, numField) search string in subfield of the field given|''SCHS''
-|104|INSS|       |1 |insert(var, chaine, field, subfield)| ''''+|104|INSS|   |1|insert(var, chaine, field, subfield)|''INSS''
-|105|REMS|       |1 |remove(var, field, subfield)| ''''+|105|REMS|   |1|remove(var, field, subfield)|''REMS''
-|106|DEXH|lg nom    |2+lg|ad_var_hash.nom<pile1, pile2> = pile3 (suite PHDE)| ''''+|106|DEXH|d1 string|2+d1|ad_var_hash.string<pile1, pile2> = pile3 (suite PHDE)|''DEXH <string>''
-|107|DEXI|lg nom    |2+lg|ad_var_hash!nom<pile1, pile2> = pile3 (suite PIDE)| ''''+|107|DEXI|d1 string|2+d1|ad_var_hash!string<pile1, pile2> = pile3 (suite PIDE)|''DEXI <string>''
-|108|PREC|d1      |2 |force la precision a <d1> decimales (de 0 a 5)| ''''+|108|PREC|d1  |2|force la précision a <d1> décimales (de 0 a 5)|''PREC <d1>''
-|109|DESV|       |1 |ad_var[pile1, pile2] = pile3 (suite PVAR)| ''''+|109|DESV|   |1|ad_var[pile1, pile2] = pile3 (suite PVAR)|''DESV''
-|110|DESH|lg nom    |2+lg|ad_var_hash.nom[pile1, pile2] = pile3 (suite PHDE/PIDE)| ''''+|110|DESH|d1 string|2+d1|ad_var_hash.string[pile1, pile2] = pile3 (suite PHDE/PIDE)|''DESH <string>''
-|111|DESI|lg nom    |2+lg|ad_var_hash!nom[pile1, pile2] = pile3 (suite PHDE/PIDE)| ''''+|111|DESI|d1 string|2+d1|ad_var_hash!string[pile1, pile2] = pile3 (suite PHDE/PIDE)|''DESI <string>''
-|112|DEZV|       |1 |ad_var<pile1, pile2>[pile3, pile4] = pile5 (suite PVAR)| ''''+|112|DEZV|   |1|ad_var<pile1, pile2>[pile3, pile4] = pile5 (suite PVAR)|''DEZV''
-|113|DEZH|lg nom    |2+lg|ad_var_hash.nom<pile1, pile2>[pile3, pile4] = pile5 (suite PHDE/PIDE)| ''''+|113|DEZH|d1 string|2+d1|ad_var_hash.string<pile1, pile2>[pile3, pile4] = pile5 (suite PHDE/PIDE)|''DEZH <string>''
-|114|DEZI|lg nom    |2+lg|ad_var_hash!nom<pile1, pile2>[pile3, pile4] = pile5 (suite PHDE/PIDE)| ''''+|114|DEZI|d1 string|2+d1|ad_var_hash!string<pile1, pile2>[pile3, pile4] = pile5 (suite PHDE/PIDE)|''DEZI <string>''
-|115|SDBG|d3 chaine   |4+d3|liste des fichiers sources + num lignes (pour debugger)| ''''+|115|SDBG|d3 string|4+d3|liste des fichiers sources + num lignes (pour debugger)|''SDBG <string>''
-|116|PHDN|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash <ad_var_hash> la var <nom> qui sera utilisee ensuite par NLET (mis dans <ad_var>)| ''''+|116|PHDN|d1 string|2+d1|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash <ad_var_hash> la var <string > qui sera utilisée ensuite par NLET (mis dans <ad_var>)|''PHDN <string>''
-|117|PIDN|lg nom    |2+lg|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash <ad_var_hash> (avec indirection) la var <nom> qui sera utilisee ensuite par NLET (mis dans <ad_var>)| ''''+|117|PIDN|d1 string|2+d1|enchainement PVAH/PVAI, en dernier cree/remplace dans la hash <ad_var_hash> (avec indirection) la var <string > qui sera utilisée ensuite par NLET (mis dans <ad_var>)|''PIDN <string>''
-|118|SADV|       |1 |sauvegarde ad_var dans ad_var_sav (suite enchainement PVAR/PVAH/PVAI)| ''''+|118|SADV|   |1|sauvegarde ad_var dans ad_var_sav (suite enchainement PVAR/PVAH/PVAI)|''SADV''
-|119|VLET|       |1 |affectation de variable sans expression, traite tous les types. Correspond a : ad_var = ad_var_sav (copie)| ''''+|119|VLET|   |1|affectation de variable sans expression, traite tous les types. Correspond a : ad_var = ad_var_sav (copie)|''VLET''
-|120|PHDV|lg nom    |2+lg|TODO idem VLET| ''''+|120|PHDV|d1 string|2+d1|idem VLET mais en fin de chaine de vars hash pour la var <string>|''PHDV <string>''
-|121|PIDV|lg nom    |2+lg|TODO idem VLET| ''''+|121|PIDV|d1 string|2+d1|idem VLET mais en fin de chaine de vars hash pour la var <string>, avec indirection|''PIDV <string>''
-|122|HCOU|       |1 |idem PVAH/PVAI mais renvoi le nombre d'element de la hash/objet en cours (dans ad_var = e->int_number)| ''''+|122|HCOU|   |1|idem PVAH/PVAI mais renvoi le nombre d'élément de la hash/objet en cours (dans ad_var = eint_number)|''HCOU''
-| | | | | | | +|123|PVHD|d1 string|2+d1|enchainement PVAH/PVAI, en dernier supprime dans la hash <ad_var_hash> la var <string> (idem DELE mais avec suppression)|''PVHD <string>''
-| 251 | LIBR | | 1 | Indique que le binaire est une library, pas un programme exécutable directement. Première instruction du binaire. | ''LIBR''+|124|PVID|d1 string|2+d1|enchainement PVAH/PVAI, en dernier supprime dans la hash <ad_var_hash> la var <string> (avec indirection) (idem DELE mais avec suppression)|''PVID <string>''
-| 252 | ENDL | | 1 | Fin de library, avec libération des éléments locaux à la library uniquement <color #ed1c24>TODO</color> | ''ENDL''+|125|SSRC| |1|sortedsearch(var) search sorted string in field|''SSRC''
-| 253 | TEST | | 1 | Instruction permettant d'exécuter du codeutilisé dans le cadre du développement de W. Ne fait rien en fonctionnement normal | ''TEST''+|126|SSCS| |1|search(var, numField) search sorted string in subfield of the field given|''SSCS''
-| 254 | ENDS | | 1 | Fin du sous-programme en cours, avec libération des éléments locaux à la sub uniquement | ''ENDS''+|127|CPHH| |1|idem CPHA mais avec flag positionne indiquant l'empilage d'une var appartenant a une hash|''CPHH''
-| 255 | ENDP | | 1 | Fin du programme principale en cours, en effectuant toutes les libérations mémoires. Instruction appelée de manière forcée en cas d'erreur non gérable par une exception | ''ENDP'' |+|128|CPHN|d1 string|2+d1|empile dans la call stack la var ad_var en nommant le parametre <nom> (idem CPAN) et avec flag positionne indiquant l'empilage d'une var appartenant a une hash|''CPHN <string>''
 +|250|PROG| |1|Indique que le binaire est un programme, premiere instruction du binaire sinon endp|''PROG'' 
 +|251|LIBR| |1|Indique que le binaire est une library, pas un programme exécutable directement. Première instruction du binaire.|''LIBR''
 +|252|ENDL| |1|Fin de library, avec libération des éléments locaux à la library uniquement|''ENDL''
 +|253|BACK| |1|Indique un binaire executable en mode demonpremiere instruction|''BACK''
 +|254|ENDS| |1|Fin du sous-programme en cours, avec libération des éléments locaux à la sub uniquement|''ENDS''
 +|255|ENDP| |1|Fin du programme principale en cours, en effectuant toutes les libérations mémoires. Instruction appelée de manière forcée en cas d'erreur non gérable par une exception|''ENDP'' | 
 + 
  • referencepcode.1771752296.txt.gz
  • Dernière modification : 2026/02/22 09:24
  • de root