Вопросы по теме 'jvm-bytecode'

Как работает bipush в JVM?
Я понимаю, что iload принимает целые числа от -1 до 5, но как вы можете расширить их до более высоких чисел с помощью инструкции bipush? Как конкретное целое число сохраняется с байт-кодом?
4087 просмотров
schedule 15.10.2021

Как собрать данные об использовании константных выражений с помощью анализа байт-кода?
Класс A объявляет константу C следующим образом: public class A { public static final int C = 10; } Эта константа используется в методе M класса B следующим образом: public class B { public int M() { return A.C;...
45 просмотров

Инструмент для чтения и отображения версий Java .class
Кто-нибудь из вас знает инструмент, который будет искать файлы .class и затем отображать их скомпилированные версии? Я знаю, что вы можете просматривать их по отдельности в шестнадцатеричном редакторе, но у меня есть много файлов классов, которые...
62135 просмотров
schedule 25.02.2022

Как получить, где объект инициализируется с помощью ASM?
У меня есть определенный класс, о котором я хочу позаботиться. public class TargetClass { public TargetClass() { /* .. */ } } В моем большом проекте у меня есть несколько мест, где я создаю новый экземпляр этого класса. public class A...
213 просмотров

Почему отдельные теги используются для строк, целых чисел, чисел с плавающей запятой и т. д. в пуле констант
В определении постоянного пула, согласно спецификации, почему требуется иметь CONSTANT_String, CONSTANT_Integer,... как отдельный и уникальный тег? почему эти теги нельзя рассматривать как тег CONSTANT_Class, как и все другие классы? Только...
47 просмотров
schedule 29.06.2022

Удаление постоянного пула Java во время выполнения
У меня есть следующий класс Java: public class Test { public static void main(String[] args) { if (false) { log("String_to_be_never_printed_1"); } if (isPrintable()) {...
240 просмотров
schedule 01.08.2022

Байт-код Java - одна метка для каждого оператора
Компилятор javac добавляет метку номера строки к каждой инструкции, которая соответствует новой строке в исходном коде. Как следствие, когда в одной строке перечислены несколько операторов, все они попадают под одну и ту же метку строки ( L1 в...
816 просмотров
schedule 06.09.2022

Как сгенерировать байт-код для оператора if-else
как сгенерировать код, соответствующий инструкции байт-кода IF THEN - ELSE с опциональной веткой ELSE? Например, программа If-else.pas считается правильной, а программа If.pas не считается правильной, так как не содержит ветки ELSE....
2001 просмотров

Какие проблемы может вызвать отключение проверки байт-кода Java?
В этом ответе говорится, что проверка используется для обеспечения того, чтобы байт-код Java "соответствовал правилам языка Java для обеспечения безопасности". Если бы эта проверка не была выполнена, запуск небезопасного байт-кода был бы...
1748 просмотров
schedule 28.05.2023

Встроенное свойство расширения Kotlin
Я знаю, что ключевое слово inline позволяет избежать накладных расходов на вызов функции. Но я не могу понять, для чего работает встроенное свойство расширения? Допустим, у нас есть два свойства расширения с именем foo и еще одно свойство с...
2594 просмотров

Как изменить постоянный пул с помощью ASM?
Я уже понимаю, как манипулировать классом во время выполнения с помощью ASM из этот пост . Но у меня есть еще вопрос о том, как изменить постоянный пул. Ниже приведен пример программы Java, которую я хочу изменить. Основной JAR-файл:...
1385 просмотров
schedule 22.11.2022

Является ли байт-код Java всегда совместимым с пересылкой?
Я понимаю, что байт-код, сгенерированный версией JDK X, гарантированно будет работать на JVM Y при условии, что Y >= X. Подходит ли это для всех версий JDK/JVM? i.e Справедливо ли ожидать, что файлы классов, сгенерированные JDK 1, будут работать...
1598 просмотров
schedule 16.10.2022

ASM - странный индекс localVar с использованием newLocal из LocalVariableSorter
Я добавляю новых местных жителей через newLocal из LocalVariableSorter . Метод, к которому я добавляю локальные переменные, является методом экземпляра с длинным параметром. Я добавляю двух местных жителей; один длинный, один объект. В примере...
251 просмотров

Байт-код конструктора
В руководстве по ASM рассказывается о конструкторах: package pkg; public class Bean { private int f; public int getF() { return this.f; } public void setF(int f) { this.f = f; } } Класс Bean также имеет...
1774 просмотров

Модификация байт-кода Java с использованием ASM выдает ClassFormatError: Invalid length XXX in LocalVariableTable
Я использую ASM (также дерево и утилиту) и столкнулся со странным исключением. Exception in thread "main" java.lang.ClassFormatError: Invalid length 65526 in LocalVariableTable in class file Я пытаюсь отредактировать байт-код файла .class,...
192 просмотров

Код Byte Buddy для передачи вновь созданного объекта в метод
Итак, я пытаюсь сгенерировать относительно простой код с помощью Byte Buddy, но постоянно сталкиваюсь с исключениями. По сути, я пытаюсь, чтобы Byte Buddy (версия 1.9.0) генерировал эквивалент следующего класса Java (это всего лишь упрощенный...
114 просмотров
schedule 27.10.2023

Частный конструктор JVM INVOKESPECIAL с ASM
Я использую ASM для генерации некоторого байт-кода и его динамического выполнения. Но есть случай, когда мне нужно вызвать частный конструктор, но я не понял, как это сделать. Я знаю, что можно вызвать частный конструктор через отражение...
473 просмотров