Java字节码对于虚拟机,就像汇编对于计算机一样,属于基本执行指令.

    Java虚拟机的指令由一个字节长度的, 代表某种特定的操作含义的数字(称之为操作码, Opcode)以及跟随其后额零至多代表此操作所需参数(称之为操作数,Operands)而构成,由于Java虚拟机采用面向操作数栈而不是寄存器的结构,所以大多数指令都不包含操作数,只有一个操作码

    由于限制了Java虚拟机操作码的长度为一个字节(即0-255) , 这就意味着指令集的操作码总数不可能超过256条

    • 加载与存储指令
    • 算术指令
    • 类型转换指令
    • 对象的创建与访问指令
    • 方法的调用与返回指令
    • 操作数栈管理指令
    • 控制转移指令
    • 异常处理指令
    • 同步控制指令

    在做值相关操作时;

    • 一个指令, 可以从局部变量表 , 常量池 , 堆中的对象, 方法调用, 系统调用中等取的数据,这些数据被压入操作栈中
    • 一个指令, 也可以从操作栈中取得一个或者多个值(pop多次),完成赋值, 加减乘除,方法传参, 系统调用等操作