Bonjour,
J'aimerais bien quelques explications sur le résultat d'une compilation, car j'ai du mal à me représenter le fonctionnement de certaines instructions basiques du bytecode Java.
Voici un programme simple : http://pastebin.com/hBLh1M13
Voici le bytecode correspondant (compilateur Java 7, mais ça doit pas changer grand chose pour un code aussi simple) : http://pastebin.com/KX0WfMAw
J'ai un peu de mal avec le bytecode de la méthode "method()".
0: iload_1 // Je suppose qu'on ajoute l'entier passé en paramètre au sommet de la pile
1: iconst_5 // On ajoute la constante 5 au sommet de la pile
2: iadd // On ajoute les deux entiers au sommet de la pile. Je suppose que le résultat est placé au sommet de la pile ?
3: istore_2 // On stocke la valeur au sommet de la pile dans une variable nommée 2
4: iload_2 // On charge le contenu de la variable 2 au sommet de la pile
5: ireturn // Et on retourne la valeur au sommet de la pile
En fait je comprends pas le pourquoi des opérations 3 et 4. Je pense que c'est moi qui interprète mal leur fonction, mais je vois pas pourquoi on dépile dans la variable 2 pour ensuite réempiler cette valeur
Pourquoi on ne fait pas le ireturn directement après le iadd ?