zoukankan      html  css  js  c++  java
  • 说说JVM中的操作码

    JVM操作码

    加载与存储操作码

    load --从局部变量加载值到栈上
    ldc --从池中加载常量到栈上
    store --把值从栈中移走,存到局部变量中
    dup --复制栈顶的值
    getField --从栈顶对象常量池中得到指定位置的域
    putField --把值放入对象在常量池中指定位置的域上
    

    数学运算操作码

    add --栈顶端的2个值相加,并把结果存在栈中
    sub --栈顶端的2个值相减,并把结果存在栈中
    div --栈顶端的2个值相除,并把结果存在栈中
    mul --栈顶端的2个值相乖,并把结果存在栈中
    

    执行控制操作码

    if --如果符合特定条件,则跳转到特定分支的偏移处
    goto --无条件跳转到分支偏移处
    jsr --跳到本地子流程中,并把返回地址放到栈中
    ret --返回到索引的局部变量所指向的偏移地址
    tableswitch --用于实现switch
    lookupswitch --用于实现switch
    

    调用操作码

    invokestatic --调用一个静态方法
    invokevirtual --调用一个‘常规’的实例方法
    invokeinterface --调用一个接口方法
    invokespecial --调用一个‘特殊’的实例方法(private)
    invokedynamic --动态调用,暂不考虑
    

    平台操作操作码

    new --为新对象分配内存,类型由指定位置的常量确定
    monitorenter --锁住对象
    monitorexit --解锁对象
    

    以上部分摘自‘《java程序员修炼之道》 第五章:文件与字节码;5.4字节码’部分内容,详情请查阅原著!这里主要看的是分类,具体详细描述可以参照:http://blog.csdn.net/lm2302293/article/details/6713147,有较为详细的介绍,只是年代有点久远!

  • 相关阅读:
    HDU 5569 matrix
    HDU 2795 Billboard
    HDU 1394 Minimum Inversion Number
    HDU 1754 I Hate It
    HDU 1166 敌兵布阵
    FOJ 2206 函数求解
    hihoCoder 1252 Kejin Game
    hihoCoder 1257 Snake Carpet(很简单的构造方法)
    2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
    HDU 2485 Destroying the bus stations
  • 原文地址:https://www.cnblogs.com/frinder6/p/5444903.html
Copyright © 2011-2022 走看看