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 2586 How far away ?
    zoj 3195 Design the city
    hust 1022 K-diff subsequence
    poj 2253 Frogger
    poj 1470 Closest Common Ancestors
    poj 2553 The Bottom of a Graph
    poj 1236 Network of Schools
    poj 3694 Network
    uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
    2014年百度之星程序设计大赛
  • 原文地址:https://www.cnblogs.com/frinder6/p/5444903.html
Copyright © 2011-2022 走看看