Compilateur/Documentation/transcription_opcodes.md
2021-06-14 09:04:23 +02:00

2 KiB

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)