`
hhyyllgg
  • 浏览: 27525 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jvm常用操作码

 
阅读更多
常见的常量入栈的操作码有 const push idc
1,const   i l f d a分别表示 int long float double 对象引用
如:
  • aconst_null 将null对象引用压入栈
  • iconst_m1 将int类型-1压入栈
  • iconst_1 将int类型的1压入栈
  • lconst_3 将long类型的3压入栈
2,push
   
  • bipush 8位带符号的整数压入栈
  • sipush 16位带符号的整数压入栈
3,idc 将常量池中的项压入栈

局部变量中的装载值指令 load
  格式和const差不多,如iload_1 表示从局部变量1中装载int类型值,对于从数组中装载则由两位字母+load表示 如:
  • aaload表示从数组中装载引用类型
  • iaload表示从数组中装载int类型


值存入局部变量指令 store
   格式同上 如:
  • aastore表示将引用类型值存入数组
  • istore_0表示将int类型值存入局部变量0


通用指令
  • popn 弹出栈顶n个字长的内容(n为1时省略)
  • dupn 复制栈顶n个字长的内容(n为1时省略)
  • dupn_xm 复制栈顶n个字长的内容,然后将复制的内容及原来弹出的n+m个字长压入栈 如:
  • dup_x2表示复制栈顶1个字长的内容,然后将复制的内容及原来弹出的3个字长压入栈
  • swap 交换栈顶两个字长的内容



类型转换指令
  • i2l:表示int转为long 其余类似

运算指令

  • add表示加 。。。。 rem取余  neg取反
  • iinc 将常量值加入到int中
  • sh 移位操作


对象操作指令

  • new 创建一个新对象
  • checkcast 检查类型
  • getfield 从对象中获取字段
  • putfield 设置对象中字段的值
  • getstatic 获取类中的静态字段
  • putstatic 设置类中静态字段的值
  • instanceof 判断类型匹配



方法调用及返回指令
  • invokevirtual 根据运行时对像类型调用方法
  • invokespecial 根据编译时的类型调用实例方法以及编译源码生成的init方法
  • invokestatic 调用静态方法
  • invokeinterface 调用接口方法
  • return 返回指令 ireturn返回int return 返回void


分享到:
评论

相关推荐

    resin-jvm 调优

    不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。有些垃圾收集专用于特殊的应用程序。比如,实时应用程序主要是为了...

    Java字节码操作类库,基于这个api标准完成一个新的asmsupport实现

    asmsupport是一个字节码操作类库,它能够让程序员非常简单的在动态创建和修改类,该框架是基于asm开发的,不同与asm的是,它避免了直接操作jvm指令,栈和局部变量。这个模块包含了asmsupport使用的第三方依赖包的...

    常用算法 Java 实现.zip

    到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。...

    常用文本聚类算法java实现.zip

    到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。...

    常用数据结构及其算法的Java实现.zip

    到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)实现不同操作系统上的兼容。...

    asm-analysis-3.2.jar

    这个工具基于访问者模式实现,可以对字节码进行各种操作和分析。 ASM库提供了一套基于树API的类分析框架和几个预定义的类分析器,这些都被包含在`org.objectweb.asm.tree.analysis`包中。在这个包里,你可以找到...

    JAVA 运行环境安装包

    Java运行环境(Java Runtime Environment,JRE)是一种用于执行Java程序的...例如,java.lang包提供了基本的类和对象操作,java.io包用于输入输出,java.util包包含了常用的数据结构和算法等等。开发人员在编写Java程

    ClojureSwift:在 Apple 的 Swift 语言 + LLVM 位码之上尝试 Clojure 方言

    与 Swift 和 Objective-C 应该有良好的互操作性,并且可以轻松访问所有常用的库和框架。 最好的方法可能是转换为 Swift 并使用 Apple 的工具。 文献评论 Gal Dolber 的 ObjC 将 Clojure (JVM) 编译器修改为生成 ...

    corejava基础重要知识点总结

    JVM = 类加载器 + 字节码校验器 + 解释执行器 JRE = JVM + API(应用程序变成接口); JDK = JRE + BIN(常用的工具命令) 面试题: JDK和JRE之间的区别? 1:分别表示的含义不同 jdk:java软件开发工具包 jre:...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    9.2.1 常用map操作类 284 9.2.2 访问map键值 288 9.3 重点复习 291 9.4 课后练习 292 chapter10 输入输出 299 10.1 inputstream与outputstream 300 10.1.1 串流设计的概念 300 10.1.2 串流继承架构 ...

    TheirNotes::ledger: 《互联网后端知识大全》「前人栽树, 后人乘凉; 它山之石, 可以攻玉」java

    偏向锁:sparkles:Java IOJVM垃圾收集CMSG1ZGC元空间字节码操作JVM 调优分布式分布式算法PaxosRaftBFT分布式锁Redis 分布式锁分布式事务MySQL查询语句基本原理innodb 存储引擎:sparkles:缓存Redis底层原理开源框架...

    KnowledgeBase:技术笔记

    几乎覆盖了所有常用的类,集合、多线程、并发包等。对源码尽我所能的进行了分析。 也对线程池,AQS的基础CLH 锁,提供了简易的实现,帮助理解。 jvm 将深入理解 jvm 的内容与oracle 官网的内容进行了总结,将其分为...

    jdk1.6 windows 64位

    Java进行系统调试和监控的工具常用的package java.lang: 这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可 以使用的Package java.io: 这里面是所有输入输出有关的类,...

    java面试题

    26. 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 14 27. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? 14 28. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 15 29. ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

     《Java开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第II卷,以开发...

    JAVA 开发环境 Java SE Development Kit (JDK) 16.0.1 x64.zip

    作为最常用的 Java 软件开发套件(SDK),JDK 的第一手组件包括 Java 应用程序的加载器(简称为 Java),即由编译器(javac)创建的类文件的解释器,该编译器本身就是源代码。从原始格式到 Java 字节码的代码,以及...

    JAVA 开发环境 Java SE Development Kit (JDK) 16.0.1 x64 免费下载.zip

    作为最常用的 Java 软件开发套件(SDK),JDK 的第一手组件包括 Java 应用程序的加载器(简称为 Java),即由编译器(javac)创建的类文件的解释器,该编译器本身就是源代码。从原始格式到 Java 字节码的代码,以及...

Global site tag (gtag.js) - Google Analytics