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

Author: Seki, 2016-05-23

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ésultat int est value1 - 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.

 1
Author: sepp2k, 2020-06-20 09:12:55