Вопрос №6349 от пользователя Анатолий Шалобасов в уроке «Модуль 2. Урок 1. Методы. Часть 2.», курс «Байт-код Java»
Здравствуйте. Честно говоря первый раз у меня такое. Я просто не могу понять как даже подступиться к заданию, не то чтобы сделать его , я даже решение учителя не стал смотреть потому что понимаю что не пойму наверное почему именно так. Подскажите пожалуйста с чего начать его или если можно как то разжевать , а то даже прочитав подсказки не стало понятнее задание. Заранее спасибо
День добрый, в данном задании Вам нужно сгенерировать байт код для метода:
public int sum(int a, int b) {
return a + b;
}
При этом практически весь байт код уже генерируется за Вас, кроме вот этой части:
return a + b;
Лишь ее Вам и нужно сгенерировать. Шаг первый будет взять бумажку и выписать на ней все команды байткода которые Вы бы выполнили:
Ну например для начала нужно загрзуить значения дву переменных a
и b
на стек:
ILOAD 1
ILOAD 2
И так далее, после того как Вч расписали все нужные инструкции их нужно теперь добавить в генератор что бы он их умел генерировать, добавлять нужно в том же порядке что Вы записали их у себя. Для примера выше две команды ILOAD можно добавить в генератор вот так:
mv.visitVarInsn(Opcodes.ILOAD, 1);
mv.visitVarInsn(Opcodes.ILOAD, 2);
Теперь генератор в этом месте сгенерирует ровно желаемые интрукции:
ILOAD 1
ILOAD 2
Только двух инструкий мало, Вам нужно самостоятельно закончить генерацию байткода для:
return a + b;
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







