Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2015, 20:28   #1
learnASM
Новичок
Джуниор
 
Регистрация: 27.05.2015
Сообщений: 2
Лампочка [ASM]Знатоки,посмотрите верно ли

Всем привет!Недавно начал сам познавать ASM и уже на 2-й день возникло куча вопросов которые не у кого спросить надеюсь на вашу помощь)
Вот тут код и комментариями я расписал все что я нашел.Исправьте где утверждения неправильные
Код:
private byte[] transformBlockLeavesBase(byte[] bytecode, boolean obf) throws IOException {
        
        ClassNode classNode = new ClassNode();
        ClassReader classReader = new ClassReader(bytecode);
        classReader.accept(classNode, 0);

        //Решил рассмотреть добавление 1-го метода в тело класса
        String getCollisionBox = obf ? "b" : "getCollisionBoundingBoxFromPool";
        String world = obf ? "Labw;" : "Lnet/minecraft/world/World;";
        String axisAlignedBB = obf ? "Lasx;" : "Lnet/minecraft/util/AxisAlignedBB;";
        

        MethodNode method = new MethodNode(Opcodes.ASM4);
        method.name = getCollisionBox;
        method.desc = "(" + world + "III)" + axisAlignedBB;
        method.access = 1;			//число доступа ?
        method.maxLocals = 5;		//число локальных переменных? Cчитать самому в конце байт кода
        method.maxStack = 1;		// Если метод НЕ абстрактный - то пишем														
        method.instructions.add(new LabelNode());     //Добавление метки на которую можно будет прыгнуть с помощью инструкции JUMP
        method.instructions.add(new InsnNode(1));	 //не понял почему 1,но что то вроде инструкции?
        method.instructions.add(new InsnNode(Opcodes.ARETURN));  		//возврат значения соответствующего типа.Если чесно не понял,нашел таблицу со списком всех Opcodes и цифрами 
        method.instructions.add(new LabelNode());											// http://asm.ow2.org/jdiff223to31/ASM%202.2.3/constant-values.html#org.objectweb.asm.Opcodes.ARETURN
        method.exceptions = new ArrayList<String>();
        classNode.methods.add(method);

        
        ClassWriter writer = new ClassWriter(0);
        classNode.accept(writer);
        return writer.toByteArray();
}
Если кому удобней вот код на пастбин http://pastebin.com/BdHeEamR

Последний раз редактировалось Stilet; 27.05.2015 в 21:02.
learnASM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменить код asm x32 под asm x64 за вознаграждение Ecosasha Фриланс 2 28.11.2013 14:11
Знатоки andresan WordPress и другие CMS 2 21.03.2012 16:31
верно или не верно????? Polusha Помощь студентам 1 19.04.2010 20:16
Посмотрите пожалуйста, что тут не верно Один Помощь студентам 1 28.12.2009 16:32
[B]Народ! Проверки мне верно или не верно? мне надо завтра сдавать[/B] Vladislav_87 Паскаль, Turbo Pascal, PascalABC.NET 6 04.06.2008 14:34