Section courante

A propos

Section administrative du site

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