类文件结构【字节码指令简介】

2021-07-26  本文已影响0人  云芈山人

概述

  1. 由于限制一个字节长度(0-255),意味着操作码不可能超过256条;
  2. 由于Class文件格式放弃编译后代码的操作数长度对齐,意味着虚拟机处理超过一个字节数据时,不得不在运行时字节中重建处具体数据的结构。如16位长度(byte1<<8)| byte2,这种操作在某种程度上会导致解释执行字节码时损失一些性能。
    • 优势
  3. 放弃了操作数长度对齐,意味着可省略很多填充和间隔符号;
  4. 用一个字符来代表操作码,是为了尽可能获得短小精干的编译代码。
do{
    自动计算PC寄存器的值加1;
    根据PC寄存器的指示位置,从字节码流中取出操作码;
    if ( 字节码存在操作数 )从字节码流中取出操作数;
    执行操作码所定义的操作;
} while ( 字节码流长度 > 0 );

一、字节码与数据类型

也有一些指令的助记符中没有明确指明操作类型的字母,如arraylength指令,没代表任何字符,但操作数永远只能是一个数据类型的对象。还有另外一些指令,如无条件跳转指令goto则是与数据类型无关的。

二、加载和存储指令

三、运算指令

四、类型转换指令

五、对象创建与访问指令

六、操作数栈管理指令

七、控制转移指令

八、方法调用和返回指令

九、异常处理指令

十、同步指令

上一篇 下一篇

猜你喜欢

热点阅读