# Descritpion opcodes ## ADD @Y @A @B Met dans l'adresse @Y le résultat de l'addition des valeurs contenues aux adresses @A et @B ## SOU @Y @A @B Idem ADD mais Soustraction ## MUL @Y @A @B Idem ADD mais multiplication ## DIV @Y @A @B Idem ADD mais division ## COP @X @Y Copie le contenu de l'adresse @Y à l'adresse @X ## AFC @X val Copie la valeur val à l'adresse @X ## COPA @X @C Copie la valeur contenue dans @C à l'adresse @X en considérant que ce qui est copié est une adresse (et donc il faut ajouter BP) ## AFCA @X val Copie la val à l'adresse @X en considérant que ce qui est copié est une adresse (et donc il faut ajouter BP) ## JMP ins Saute vers la ligne ins dans le code sans condition ## JMF @X ins Saute vers la ligne ins dans le code si la valeur à l'adresse @X est 0 ## INF @X @A @B Met à l'adresse @X 1 si val en @A plus petite que en @B et 0 sinon ## SUP @X @A @B Met à l'adresse @X 1 si val en @A plus grande que en @B et 0 sinon ## EQU @X @A @B Met à l'adresse @X 1 si val en @A égale à celle en @B et 0 sinon ## READ @X @Y Va mettre à l'adresse @X ce qui est à l'addresse contenue à l'adresse @Y (on considère que ce qui est dans @Y est un adresse et on va voir à cette adresse). Attention, considérer des addresses globales (pas relatives). ## WR @X @Y Va mettre le contenu de @Y dans l'adresse qui est la valeur dans @X (on considère que @X est un pointeur et on écrit dans l'adresse qui est contenue dans @X). Attention, considérer des addresses globales (pas relatives). ##CALL ins taille_pile_fonction_appelante Appelle la fonction dont la première ligne est ins et taille_pile_fonction_appelante est la taille de la zone mémoire utilisée par la fonction appelante (avant le push des arguments !) ##RET Restore BP et saute à l'adresse de retour (selon les valeur qui sont dans la pile de contrôle). ##STOP val Arrete le processeur si val vaut 0 (à mettre à la fin de l'ASM), ou, arrete le processeur pour val tick d'horloge (si val > 0)