Вопрос №6349 от пользователя Анатолий Шалобасов в уроке «Модуль 2. Урок 1. Методы. Часть 2.», курс «Байт-код Java»

Анатолий Шалобасов

Здравствуйте. Честно говоря первый раз у меня такое. Я просто не могу понять как даже подступиться к заданию, не то чтобы сделать его , я даже решение учителя не стал смотреть потому что понимаю что не пойму наверное почему именно так. Подскажите пожалуйста с чего начать его или если можно как то разжевать , а то даже прочитав подсказки не стало понятнее задание. Заранее спасибо

1 1

Вячеслав Ковалевский

День добрый, в данном задании Вам нужно сгенерировать байт код для метода:

    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;
1

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
7 июля 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
7 июля 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
7 июля 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
7 июля 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
7 июля 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
7 июля 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
7 июля 5 месяцев