Нужна помощь, чтобы понять инструкцию Java Bytecode
Я пытаюсь сделать статический анализ байт-кода в Прологе. Я использую библиотеку bcel для получения списка инструкций от MethodGen. За aload_0 я получаю0:aload_0[42](1)
я понимаю aload_0
предназначен для загрузки 0-й локальной переменной. Но мне трудно понять следующие биты, т.е. [42](1)
, Это также там для других инструкций, например:
invokespecial[183](3) 8
return[177](1)
Может кто-нибудь объяснить, что это? Был бы очень признателен!
1 ответ
Решение
42
это код операции для aload_0
, 183
это код операции для invokespecial
, 177
это возвращение и так далее. 8
после invokespecial, вероятно, используется 16-битный индекс пула констант, который используется инструкцией.
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-7.html