ASM字节码操作 转换已有的类 移除Instruction 移除NOP

Posted 九师兄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASM字节码操作 转换已有的类 移除Instruction 移除NOP相关的知识,希望对你有一定的参考价值。

1.概述

在上一篇文章中:【ASM】字节码操作 转换已有的类 记录方法运行时间 我们学会了在方法进入和方法输出的时候添加代码实现方法的计时功能。

本次我们要学习的是删除功能,移除Instruction

1.如何移除Instruction

在修改方法体的代码时,如何移除一条Instruction呢 其实,很简单,就是让中间的某-个MethodVisitor对象不向后“传递该instruction”就可以了。


但是,需要要注意一点:无论是添加instruction ,还是删除instruction ,还是要替换instruction .都要保持operand stack修改前和修改后是一致的。 这句话该怎么理解呢? 我们举个例子来进行说明。

假如,有一条打印语句,如下:

System.out.println( 

以上是关于ASM字节码操作 转换已有的类 移除Instruction 移除NOP的主要内容,如果未能解决你的问题,请参考以下文章

ASM字节码操作 转换已有的类 ClassReader 删除方法 添加方法

ASM字节码操作 转换已有的类 简介

ASM字节码操作 转换已有的类 优化 删除复杂的转换 删除打印语句

ASM字节码操作 转换已有的类 优化 删除复杂的转换 赋值操作

ASM字节码操作 转换已有的类 记录方法运行时间

ASM字节码操作 转换已有的类 优化 删除复杂的转换 删除加0操作