• 说说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,有较为详细的介绍,只是年代有点久远!

  • 相关阅读:
    java Semaphore的介绍和使用
    java CyclicBarrier的介绍和使用
    java CountDownLatch 使用介绍
    android模拟器不能上网设置
    计算几何题集
    BZOJ1004: [HNOI2008]Cards
    BZOJ1029: [JSOI2007]建筑抢修
    BZOJ1037: [ZJOI2008]生日聚会Party
    BZOJ1083: [SCOI2005]繁忙的都市
    Java开发笔记(一百一十四)利用Socket传输文本消息
  • 原文地址:https://www.cnblogs.com/frinder6/p/5444903.html
Copyright © 2020-2023  润新知