Introduction
La machine virtuel Parrot est conçu pour exécuté des langages dynamiques efficacement. Elle est développé à partir de 2009 par la communauté Perl sous la licence «Artistic License» et est un gratuit. La machine virtuel est particulièrement efficace pour la programmation orientée objet (POO) et dans les expressions mathématiques.
Instructions assembleur Parrot
Voici la liste des instructions de l'assembleur qu'utilise la machine virtuel Parrot :
Nom | Syntaxe | Description |
---|---|---|
ABS | abs RDEST abs RDEST, RVAL |
Cette instruction permet de retourner la valeur absolue d'un nombre. |
ACOS | acos RDEST, RVAL | Cette instruction permet de calculer l'arc cosinus de valeur spécifié en radians. |
ADD | add RDEST, RVAL add RDEST, RVAL, RVAL | Cette instruction permet d'ajouter deux valeurs et retourner la somme. |
ADDATTRIBUTE | addattribute RCLASS, RATTR | Cette instruction permet d'ajouter le nom d'attribut spécifié à la classe. |
ADDPARENT | addattribute RCLASS, RATTR | Cette instruction permet d'ajouter la classe spécifié par le deuxième paramètre à la liste de classes parente par la classe spécifié par le premier paramètre. |
AND | and RDEST, RVAL1, RVAL2 | Cette instruction permet d'effectuer un «Et logique». Cette instruction retournera le deuxième paramètre s'il est faux, autrement il retournera le troisième paramètre. |
ASEC | asec RDEST, RVAL | Cette instruction permet d'effectuer la sécante inversé de valeur spécifié en radians. |
ASIN | asin RDEST, RVAL | Cette instruction permet d'effectuer l'arc sinus de valeur spécifié en radians. |
ASSIGN | assign RDEST, RVAL | Cette instruction permet d'associer une valeur au PMC. |
ATAN | atan RDEST, RVAL atan RDEST, RVAL1, RVAL2 |
Cette instruction permet d'effectuer le calcul de l'arc de tangente en radians. |
BAND | band RDEST, RVAL band RDEST, RVAL, RVAL |
Cette instruction permet d'effectuer un «Et binaire» entre deux valeurs. |
BANDS | bands RDEST, RVAL bands RDEST, RVAL, RVAL |
Cette instruction permet d'effectuer un «Et binaire» entre deux chaine de caractères. |
BNOT | bnot RDEST, RVAL | Cette instruction permet d'effectuer une «négation binaire» de la valeur spécifié. |
BNOTS | bnot RDEST, RVAL | Cette instruction permet d'effectuer une «négation binaire» de la valeur spécifié. |
BOR | bor RDEST, RVAL, RVAL | Cette instruction permet d'effectuer un «Ou binaire» entre deux valeurs. |
BORS | bors RDEST, RVAL, RVAL | Cette instruction permet d'effectuer un «Ou binaire» entre deux chaine de caractères. |
BOUNDS | bounds RINT | Cette instruction permet d'activer (valeur différente de 0) la vérification des limites du Bytecode dans l'interpréteur et désactiver (valeur 0) la vérification des limites. |
BRANCH | branch RLABEL | Cette instruction permet d'effectuer une branchement à l'étiquette spécifié. |
BXOR | bxor RDEST, RVAL bxor RDEST, RVAL, RVAL |
Cette instruction permet d'effectuer un «Ou exclusif binaire» entre deux valeurs. |
BXORS | bxors RDEST, RVAL bxors RDEST, RVAL, RVAL |
Cette instruction permet d'effectuer un «Ou exclusif binaire» entre deux chaine de caractères. |
CALLMETHODCC | callmethodcc callmethodcc RMETHODNAME |
Cette instruction permet d'effectuer des appels à la méthode spécifié dans l'objet entreposé dans P2 selon la «Parrot Calling Conventions». |
CAN | can RDEST, ROBJECT, RMETHODNAME | Cette instruction permet de retourner la valeur «true» si l'objet spécifié peut faire la méthode spécifié, sinon il retournera la valeur «false». |
CEIL | ceil RDEST ceil RDEST, RVAL |
Cette instruction permet de fixer la destination à la plus petite valeur intégrale inférieure ou égale à la valeur (si présente) ou elle-même dans le cas contraire. |
CHECKEVENTS | checkevents | Cette instruction permet de vérifier la file d'attente de tâche de l'interpréteur pour les événements non géré et exécute les gestionnaires d'événements associés. |
CHOPN | chopn RDEST, RVAL1 chopn RDEST, RVAL1, RVAL2 | Cette instruction permet d'enlever le nombre de caractères spécifié par le troisième paramètre pour la chaine de caractères spécifié par le deuxième paramètre. |
CHR | chr RDEST, RINT | Cette instruction permet de demander le caractère correspondant à la valeur spécifié. |
CLASS | class RCLASS, ROBJECT | Cette instruction permet de demander la classe correspondant à l'objet spécifié. |
CLEAR_EH | clear_eh | Cette instruction permet d'enlever l'exception la plus récente du gestionnaire. |
CLEARI | cleari | Cette instruction permet d'enlever tous les registres de type de données entier. |
CLEARN | clearn | Cette instruction permet d'enlever tous les registres de type de données réel. |
CLEARP | clearp | Cette instruction permet d'enlever tous les registres de type de données PMC. |
CLEARS | clears | Cette instruction permet d'enlever tous les registres de type de données de chaine de caractères. |
CLONE | clone | Cette instruction permet d'effectuer une copie de la chaine de caractères ou du PMC et de retourner le résultat. |
CLOSE | close RDEST | Cette instruction permet de fermer le gestionnaire de fichier du registre spécifié. |
CMOD | cmod RDEST, RVAL1, RVAL2 | Cette instruction permet d'effectuer le calcul du restant d'une division. |
CMP | cmp RDEST, RVAL1, RVAL2 | Cette instruction permet de fixer la destination à 1 si la valeur du deuxième paramètre est supérieur à la valeur du troisième paramètre et fixe la valeur -1 si la valeur du deuxième paramètre est inférieur à la valeur du troisième paramètre. |
CMP_NUM | cmp_num RDEST, RVAL1, RVAL2 | Cette instruction permet de fixer la destination à 1 si la valeur du deuxième paramètre est supérieur à la valeur du troisième paramètre et fixe la valeur -1 si la valeur du deuxième paramètre est inférieur à la valeur du troisième paramètre pour une comparaison numérique. |
CMP_STR | cmp_str RDEST, RVAL1, RVAL2 | Cette instruction permet de fixer la destination à 1 si la valeur du deuxième paramètre est supérieur à la valeur du troisième paramètre et fixe la valeur -1 si la valeur du deuxième paramètre est inférieur à la valeur du troisième paramètre pour une comparaison de chaine de caractères. |
CMP_PMC | cmp_pmc RDEST, RVAL1, RVAL2 | Cette instruction permet de fixer la destination à 1 si la valeur du deuxième paramètre est supérieur à la valeur du troisième paramètre et fixe la valeur -1 si la valeur du deuxième paramètre est inférieur à la valeur du troisième paramètre pour une comparaison de PMC. |
COLLECT | collect | Cette instruction permet de déclencher l'exécution du ramasse-miettes. |
COLLECTOFF | collectoff | Cette instruction permet d'activer l'exécution du ramasse-miettes. |
COLLECTON | collecton | Cette instruction permet de désactiver l'exécution du ramasse-miettes. |
COMPILE | compile RDEST, RCOMPILER, RSOURCE | Cette instruction permet de compiler une chaine de caractères du code source avec la compilation PMC et entrepose le résultat. |
COMPREG | compreg RDEST, RTYPE | Cette instruction permet de retourner un compilation PMC pour un type particulier de code source. |
COMPREG | compreg RTYPE, RSUB | Cette instruction permet d'enregistrer le registre spécifié comme compilation pour le type de langage spécifié. |
CONCAT | concat RDEST, RVAL concat RDEST, RVAL, RVAL |
Cette instruction permet d'effectuer une concaténation de deux chaines de caractères. |
COS | cos RDEST, RVAL | Cette instruction permet de calculer le cosinus de la valeur spécifié en radians. |
COSH | cosh RDEST, RVAL | Cette instruction permet de calculer le cosinus hyperbolique de la valeur spécifié en radians. |
DEBUG | debug RFLAG | Cette instruction permet d'activer le débogage dans l'interpréteur (la valeur 0 pour désactiver et les autres valeurs pour l'activer). |
DEC | dec RDEST | Cette instruction permet d'effectuer la décrémentation de la valeur spécifié par 1. |
DECODELOCALTIME | decodelocaltime RDEST, RVAL | Cette instruction permet de fixer le premier paramètre vers un nouveau tableau lequel représente le temps décodé pour la valeur des secondes d'époque spécifié selon le fuseau horaire du temps régionale. |
DECODETIME | decodetime RDEST, RVAL | Cette instruction permet de fixer le premier paramètre vers un nouveau tableau lequel représente le temps décodé pour la valeur des secondes d'époque spécifié. |
DEFINED | defined RDEST, RPMC defined RDEST, RPMC[RKEY] |
Cette instruction permet de tester la définition d'une valeur de clef PMC. Si aucune clef n'est définit, cette instruction testera uniquement la définition PMC. |
DELETE | delete RDEST, RKEY | Cette instruction permet de supprimer une valeur de clef d'un PMC agrégé. |
DELPROP | delprop RPMC, RNAME | Cette instruction permet de supprimer une propriété spécifié pour un PMC. |
DEREF | deref RDEST, RREF | Cette instruction permet de fixer le registre spécifié par le premier paramètre sur le PMC auquel la référence spécifié par le deuxième paramètre se réfère. |
DIE_HARD | die_hard RLEVEL, RERROR | Cette instruction permet d'arrêter brutalement la machine virtuelle Parrot avec le niveau de sécurité spécifié par le premier paramètre et le code d'erreur spécifié par le deuxième paramètre. |
DIV | div RDEST, RVAL div RDEST, RVAL1, RVAL2 |
Cette instruction permet d'effectuer la division de l'avant-dernier paramètre par le dernier paramètre. Si le dernier paramètre n'est pas présent, il divise avec le premier paramètre. |
DLFUNC | dlfunc RDEST, RLIBRARY, RSYMBOL, RSIGNATURE | Cette instruction permet de rechercher un symbole dans une bibliothèque de liens dynamiques PMC et crée un sous-programme PMC pour ce symbole avec la signature spécifié. |
DLVAR | dlvar RDEST, RLIBRARY, RSYMBOL | Cette instruction permet de rechercher un symbole dans une bibliothèque de liens dynamiques PMC et crée un PMC pour ce symbole. |
DOES | does RDEST, ROBJECT, RVAL | Cette instruction permet de retourner la valeur «true» si l'objet spécifié fournit la valeur d'interface spécifié, sinon retourne la valeur «false». |
DOWNCASE | downcase RDEST downcase RDEST, RVAL |
Cette instruction permet de créer une copie de la chaine de caractères spécifié avec tous les caractères convertir en minuscule et entrepose le résultat dans le premier paramètre spécifié. |
END | end | Cette instruction permet de mettre fin à l'exécution du segment de code courant ou d'arrêter l'interpréteur si l'exécution est actuellement dans le code de segment principal. |
EQ | eq RVAL, RVAL, RLABEL | Cette instruction permet de sauter à une étiquette si les deux valeurs sont égales. |
EQ_ADDR | eq_addr RVAL1, RVAL2, RLABEL | Cette instruction permet de sauter à une étiquette si les deux valeurs sont les mêmes chaines de caractères ou PMC. |
EQ_NUM | eq_num RVAL, RVAL, RLABEL | Cette instruction permet de sauter à une étiquette si les deux valeurs sont numériques et égales. |
EQ_STR | eq_str RVAL, RVAL, RLABEL | Cette instruction permet de sauter à une étiquette si les deux valeurs sont des chaines de caractères égales. |
ERR | err RDEST err RDEST, RCODE |
Cette instruction permet de retourner le code d'erreur système d'un entier destinataire ou de message d'erreur système vers une destination en chaine de caractères. |
ERRORSOFF | errorsoff RVAL | Cette instruction permet de désactiver les erreurs de type spécifié. |
ERRORSON | errorson RVAL | Cette instruction permet d'activer les erreurs de type spécifié. |
EXCHANGE | exchange RREG, RREG | Cette instruction permet d'échanger les contenus de deux registres. |
EXISTS | exists RDEST, RPMC[RKEY] | Cette instruction permet de tester l'existence d'une clef PMC. |
EXIT | exit RSTATUS | Cette instruction permet de sortir de l'interpréteur avec le code d'état spécifié. |
EXP | exp RDEST, RVAL | Cette instruction permet d'effectuer une base avec un logarithme naturel «e» à la puissance spécifié. |
EXSEC | exsec RDEST, RVAL | Cette instruction permet de demander l'exsécante de la valeur spécifié en radians. |
FACT | fact RDEST, RINT | Cette instruction permet de demander le factoriel de l'entier. |
FDOPEN | fdopen RDEST, RINT, RMODE | Cette instruction permet de demander l'objet FileHandle pour le gestionnaire spécifié avec le mode d'ouverte spécifié. |
FIND_CHARTYPE | find_chartype RDEST, RNAME | Cette instruction permet de trouver un type de caractères spécifié et retourne son nombre dans le premier paramètre. |
FIND_ENCODING | find_encoding RDEST, RNAME | Cette instruction permet de trouver l'encodage spécifié et retourne son nombre dans le premier paramètre. |
FIND_GLOBAL | find_global RDEST, RNAME | Cette instruction permet de demander une variable global avec le nom spécifié par le deuxième paramètre. |
FIND_GLOBAL | find_global RDEST, RNAMESPACE, RNAME | Cette instruction permet de demander une variable global avec le nom spécifié par le troisième paramètre pour l'espace de nom spécifié par le deuxième paramètre. |
FIND_LEX | find_lex RDEST, RNAME find_lex RDEST, RDEPTH, RNAME find_lex RDEST, RDEPTH, RPOSITION |
Cette instruction permet de retourner la variable lexical pour le nom spécifié dans un bloc-notes lexical. |
FIND_METHOD | find_method RDEST, RPMC, RNAME | Cette instruction permet de rechercher la présence de la méthode spécifié dans la table PMC et retourne la méthode PMC. |
FIND_TYPE | find_type RDEST, RNAME | Cette instruction permet de rechercher l'identificateur entier pour un type PMC ou type de données natif Parrot spécifié. |
FINDCLASS | findclass RDEST, RNAME | Cette instruction permet de retourner 1 si le nom la classe existe autrement il retourne 0. |
FLOOR | floor RDEST floor RDEST, RVAL |
Cette instruction permet de retourner la plus grande valeur intégrale inférieure ou égale à celle spécifié (si présente) ou elle-même (si non-présente). |
FOLDUP | foldup RDEST foldup RDEST, RSKIP |
Cette instruction permet de retourner un nouveau tableau contenant tous les paramètres de sous-programmes passés. |
FREEZE | freeze RDEST, RVAL | Cette instruction permet de créer une image gelé spécifié par le premier paramètre d'un PMC spécifié par le deuxième paramètre. |
GC_DEBUG | gc_debug RINT | Cette instruction permet d'activer le déboguage de collecteur de miette dans l'interpréteur (0 pour désactiver et les autres valeurs pour l'activer). |
GCD | gcd RDEST, RVAL, RVAL | Cette instruction permet de demander le plus grand diviseur commun de deux valeurs spécifiés. |
GE | ge RVAL1, RVAL2, RLABEL | Cette instruction permet de sauter vers l'étiquette si la valeur spécifié du premier paramètre est supérieur ou égale à la valeur spécifié par le deuxième paramètre. |
GE_NUM | ge_num RVAL1, RVAL2, RLABEL | Cette instruction permet de sauter vers l'étiquette si la valeur numérique spécifié par le premier paramètre est supérieur ou égale à la valeur numérique spécifié par le deuxième paramètre. |
GE_STR | ge_str RVAL1, RVAL2, RLABEL | Cette instruction permet de sauter vers l'étiquette si la valeur de chaine de caractères spécifié par le premier paramètre est supérieur ou égale à la valeur de chaine de caractères spécifié par le deuxième paramètre. |
GET_ADDR | get_addr RDEST, RSUB | Cette instruction permet de demander l'adresse absolue d'une sous-routine PMC. |
GETATTRIBUTE | getattribute RDEST, ROBJECT, ROFFS | Cette instruction permet de demander une référence vers le numéro d'attribut spécifié par le troisième paramètre d'un objet spécifié par le deuxième paramètre. |
GET_CLASS | get_class RDEST, RNAME | Cette instruction permet de demander la classe PMC du nom spécifié par le deuxième paramètre. |
GETFILE | getfile RDEST | Cette instruction permet de demander le nom du fichier courant. |
GETINTERP | getinterp RDEST | Cette instruction permet de demander un PMC représentant l'interpréteur courant. |
GETLINE | getline RDEST | Cette instruction permet de demander le numéro de ligne courant. |
GETPACKAGE | getpackage RDEST | Cette instruction permet de demander le nom du module courant. |
GETPROP | getprop RDEST, RPMC, RNAME | Cette instruction permet de demander la valeur d'une propriété spécifié d'un PMC. |
GETSTDERR | getstderr RDEST | Cette instruction permet de demander l'objet FileHandle pour le gestionnaire standard d'erreur. |
GETSTDIN | getstdin RDEST | Cette instruction permet de demander l'objet FileHandle pour le gestionnaire standard d'entrée. |
GMTIME | gmtime RDEST, RVAL | Cette instruction permet de prendre un entier, lequel représente le nombre de secondes GMT, et le transforme en chaine de caractères. |
GT | gt RVAL1, RVAL2, RLABEL | Cette instruction permet de sauter vers l'étiquette si la valeur spécifié du premier paramètre est supérieur à la valeur spécifié par le deuxième paramètre. |
GT_NUM | gt_num RVAL1, RVAL2, RLABEL | Cette instruction permet de sauter vers l'étiquette si la valeur numérique spécifié par le premier paramètre est supérieur à la valeur numérique spécifié par le deuxième paramètre. |
GT_STR | gt_str RVAL1, RVAL2, RLABEL | Cette instruction permet de sauter vers l'étiquette si la valeur de chaine de caractères spécifié par le premier paramètre est supérieur à la valeur de chaine de caractères spécifié par le deuxième paramètre. |
HAV | hav RDEST, RVAL | Cette instruction permet d'effectuer le calcule d'un «haversine» de la valeur spécifié en radian. |
IF | if RCONDITION, RLABEL | Cette instruction permet de faire un saut à étiquette si la condition est vrai. |
INC | inc RDEST | Cette instruction permet d'incrémenter une valeur de un. |
INDEX | index RDEST, RSTRING, RSEARCH index RDEST, RSTRING, RSEARCH, RPOS |
Cette instruction permet de retourner la position de la première occurrence de la chaine de caractères spécifié par le troisième paramètre dans la chaine de caractères spécifié du deuxième paramètre à partir de position spécifié. |
INTERPINFO | interpinfo RDEST, RFLAG | Cette instruction permet de retourner les informations à propos de l'interpréteur. |
INVOKE | invoke invoke RSUB |
Cette instruction permet d'appeler une sous-routine, une co-routine ou une continuation entreposé dans un PMC. Si aucun PMC n'est spécifié, il appel la routine dans P0 et utilise les conventions d'appel standard. |
... | ... | ... |
Dernière mise à jour : Samedi, le 11 février 2017