Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- On pourrait imaginer le code suivant :
- int main()
- {
- float foo = 0.5;
- if(4.4 == (1.1*4))
- foo = foo*1;
- else
- foo = foo*2;
- print(foo);
- return 0;
- }
- traduit en :
- > MEMSIZE STATIC 8 ;Taille de la mémoire statique : 8 Cases
- > BEGIN start ;Démarrer à .start
- .start
- fconst 0.5 ;0 est introduit dans le stack
- fvar 2A ;Crée une variable vide de type float à l'adresse 42 (2A en hexadécimal)
- move 2A ;Déplace la premiere entrée du Stack (d'ou le S) (0.5) à l'adresse 2A
- iconst 4 ;4 est introduit dans le stack
- fconst 1.1
- mul ;Multiplie les 2 premieres entrées du stack (top du stack)*(nombre en dessous), les efface et insère le résultat dans le stack
- fconst 4.4
- compeq ;Comparateur égal (==), compare les 2 premieres entrées du stack, les effacent , ajoute un nombre 0 ou 1 dans la pile selon le résultat
- if branch1 branch2 ;Si le booléen au dessus du stack est vrai, va à branch1, sinon, va à branch2 (Ne touche pas au stack, sauf si il y a un else if style if branch1 branch2 branch3) ou la premiere entrée du stack sera pop pour vérifier la condition suivante
- print 2A ;Affiche le contenu de 2A dans la sortie par défaut de la machine, qui devrait être 0.5 vu que branch1 a été exécuté
- iconst 0 ;AJoute le code de retour
- end ;Termine la machine
- .branch1
- fload 2A ;Copie 2A dans le stack
- iconst 1
- mul
- move 2A ;Copie le résultat dans 2A
- .branch2
- fload 2A ;Copie 2A dans le stack
- iconst 2
- mul
- move 2A ;Copie le résultat dans 2A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement