Нужна помощь, чтобы понять инструкцию 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

Другие вопросы по тегам