Есть ли умный способ определить длину инструкций байт-кода Java?
Я создаю инструмент статического анализа для Java, и есть некоторая информация о программах, которые я анализирую, которые будет легче получить, если я смогу получить их из байт-кода в.class
файлы.
Меня не волнует каждыйинструкции это может быть в файле класса. Например, мне нужно только посмотреть, есть лиgetfield
инструкции.
Проблема состоит в том, что, поскольку каждая инструкция имеет переменную длину, кажется, что в общем случае мне нужно (в моем коде) указать длину каждого отдельного кода операции, прежде чем я смогу определить, где (например,)getfield
инструкции начинаются и заканчиваются.
Для некоторых других наборов команд (например,x86), существуют такие правила, как «любой код операции ниже 0x0F равен 1 байту, а все, что равно или больше 0x0F, составляет два байта».
Есть ли такой удобный шаблон в инструкциях байт-кода Java?