commande ioper ordre isub idiv dans java virtualmachine
En regardant les commandes ioper imul et iadd sont évidents mais si j'ai:
Sipush 9
sipush 3
sipush 4
La pile ressemblera à
4
3
9
Si le suivant est isub puis-je soustraire 4 de 3? ou 3 de 4
Vive
1 answers
La sémantique des instructions est définie dans section 6.5 de la spécification JVM. En particulier isub est défini comme ceci:
Pile d'opérandes
..., valeur1, valeur2 →
..., résultat
Description
Value1 et value2 doivent être de type
int
. Les valeurs sont sorties de la pile d'opérandes. Le résultatint
estvalue1 - value2
. Le résultat est poussé sur la pile d'opérande.
La notation ..., value1, value2
signifie que value2
est sur le dessus de la pile et de la value1
est celui en dessous (et le reste de la pile est notée ...
, car isub
ne pas y toucher).
Donc dans votre exemple ce serait 3 - 4
parce que value1 = 3
et value2 = 4
.