ASM字节码操作 Label 介绍 顺序选择和循环

Posted 九师兄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASM字节码操作 Label 介绍 顺序选择和循环相关的知识,希望对你有一定的参考价值。

1.概述

在程序中,有三种基本控制结构:顺序、选择和循环。我们现在已经知道,MethodVisitor 类是用于生成方法体的代码

  1. 如果没有Label学的参与,那么MethodVisitor类只能生成”顺序”结构的代码;
  2. 如果有Label类的参与,MethodVisitor 类就能生成选择"和“循环“结构的代码。

在本文当中,我们来介绍Label类。

如果查看Label类的API文档,就会发现下面的描述,分成了三个部分。

  1. 第一部分,Label 类上是什么(What) ;
  2. 第二部分,在哪些用到Label类(Where) ;
  3. 第三部分,在编写ASM代码

过程中,如何使用Label类(How) , 或者说,Label 类与Instruction的关系。

  1. A position in the bytecode of a method.
  2. Labels are used for jump, goto, and switch instructions, and for try catch blocks.
  3. A label designates the instruction that is just after. Note however that there can be other elements between a label and the instruction it designates (such as other labels, stack map frames, line numbers, etc.).

如果是刚刚接触Lab

以上是关于ASM字节码操作 Label 介绍 顺序选择和循环的主要内容,如果未能解决你的问题,请参考以下文章

ASM字节码操作 Label 生成 for 循环 语句

ASM字节码操作 Label 生成 try catch 语句

ASM字节码操作 Label 生成 switch 语句

ASM字节码操作 工具类与常用类 CheckClassAdapter 介绍

ASM字节码操作 Opcodes 介绍

ASM字节码操作 工具类与常用类 AnalyzerAdapter 工作原理