乐山网站seo,女人网站源码,河南网站建设运营域名注册公司,郑州网站建设设计公司字节码指令大致分为九类#xff1a;
一#xff1a;加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输
二#xff1a;算术指令用于对两个操作数栈上的值进行某种特定运算#xff0c;并把结果重新存入到操作栈顶。运算指令可以分为两种#xff1a;对整…字节码指令大致分为九类
一加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输
二算术指令用于对两个操作数栈上的值进行某种特定运算并把结果重新存入到操作栈顶。运算指令可以分为两种对整型数据进行运算的指令与对浮点型数据进行运算的指令无论是哪种算术指令均是使用Java虚拟机的算术类型来进行计算的换句话说是不存在直接支持byte、short、char和boolean类型的算术指令对于上述几种数据的运算应使用操作int类型的指令代替
三类型转换指令可以将两种不同的数值类型相互转换这些转换操作一般用于实现用户代码中的显式类型转换操作或用来处理字节码指令集中数据类型相关指令无法与数据类型一一对应的问题
小范围向大范围安全转换窄化类型转换必须显示的使用转换指令即强转
四对象创建与访问指令类实例和数组的创建与操作使用了不同的字节码指令。对象创建后就可以通过对象访问指令获取对象实例或者数组实例中的字段或者数组元素创建类实例、创建数组、访问类字段static字段或者称为类变量和实例字段、把一个数组元素加载到操作数栈、将一个操作数栈的值储存到数组元素、取数组长度、检查类实例类型等指令
五操作数栈管理指令用于直接操作操作数栈的指令将操作数栈的栈顶一个或两个元素出栈、将栈最顶端的两个数值互换等指令
六控制转移指令可以让Java虚拟机有条件或无条件地从指定位置指令而不是控制转移指令的下一条指令继续执行程序条件分支、复合条件分支、无条件分支
七方法调用和返回指令方法调用指令与数据类型无关而方法返回指令是根据返回值的类型区分的包括ireturn当返回值是boolean、byte、char、short和int类型时使用、lreturn、freturn、dreturn和areturn另外还有一条return指令供声明为void的方法、实例初始化方法、类和接口的类初始化方法使用
八异常处理指令显式抛出异常的操作处理异常catch语句不是由字节码指令来实现的而是采用异常表来完成
九同步指令Java虚拟机可以支持方法级的同步和方法内部一段指令序列的同步都使用管程就是“锁”实现方法级的同步是隐式的无须通过字节码指令来控制它实现在方法调用和返回操作之中同步一段指令集序列通常是由Java语言中的synchronized语句块来表示的Java虚拟机的指令集中有monitorenter和monitorexit两条指令来支持synchronized关键字的语义正确实现synchronized关键字需要Javac编译器与Java虚拟机两者共同协作支持