当前位置: 首页 > news >正文

湘潭城乡建设发展集团网站经典广告案例

湘潭城乡建设发展集团网站,经典广告案例,用dw制作个人简历网页,湖南省建设厅网站JVM 执行引擎在执行 Java 代码时有解释执行#xff08;通过解释器执行#xff09;和编译执行#xff08;通过即时编译器产生本地代码执行#xff09;两种选择#xff1b; HotSpot 实际的实现中#xff0c;模版解释器工作时#xff0c;并不是按照概念模型中进行机械式计…JVM 执行引擎在执行 Java 代码时有解释执行通过解释器执行和编译执行通过即时编译器产生本地代码执行两种选择 HotSpot 实际的实现中模版解释器工作时并不是按照概念模型中进行机械式计算而是动态生成每一条字节码对应的汇编代码来运行 文章目录1. 解释执行2. 基于栈的指令集与基于寄存器的指令集3. 基于栈的解释器执行过程1. 解释执行 笼统的说 Java 是解释执行是没有意义的需要结合具体 JVM 实现版本和执行引擎运行模式来看 Java 还发展出了直接生成本地代码的编译器Jaotc、GCJ、Excelsior JETC/C 语言也出现了通过解释器执行的版本CINT 大部分程序语言基于物理机、Java 虚拟机、其他非 Java 高级语言虚拟机 HLLVM代码转换成物理机的目标代码或虚拟机能执行的指令集之前需要经过如下步骤 Java 中 javac 编译器完成了程序代码的词法分析、语法分析最终经过抽象语法树生成字节码指令流这部分是独立于 JVM 之外完成而解释器实在 JVM 内部所以 Java 的编译是半独立实现的 2. 基于栈的指令集与基于寄存器的指令集 基于栈的指令架构Instruction Set ArchitectureISA大部分指令是零地址指令依赖于操作数栈进行工作 基于寄存器的指令集典型的如 x86 的二地址指令集主流 PC 机物理硬件直接支持的指令集架构依赖于寄存器进行工作 1 1 演示 // 基于栈的指令集 iconst_1 iconst_1 iadd istore_0iconst_1 指令将常量 1 压入栈连续两次iadd 指令将栈顶两个值出栈、相加、把结果放回栈顶最后 istore_0 指令把栈顶的值放回局部变量表的第 0 个变量槽 // 基于寄存器的指令集mov eax, 1add eax, 1mov 指令将 EAX 寄存器的值设置为 1add 指令再把这个值加 1结果就保存在 EAX 寄存器中每个指令包含两个单独的输入参数依赖于寄存器来访问和存储数据 基于栈的指令集 vs. 基于寄存器的指令集 优点由于寄存器与硬件绑定基于栈的指令集不直接使用寄存器因此可移植而基于寄存器的指令集的代码受硬件的约束优点基于栈的指令集可以有 VM 自行实现可将一些访问最频繁的数据程序计数器、栈顶缓存等放到寄存器以获得更好的性能优点基于栈的指令集代码更紧凑编译器实现更简单不需要考虑空间分配问题基于计数器的指令集还要存参数缺点基于栈的指令集理论上稍慢于寄存器架构的指令集解释执行状态完成相同功能所需的指令数量一般也会更多出入站操作都需要相应指令缺点基于栈的指令集操作在内存中相对处理器来说内存是执行速度的瓶颈 3. 基于栈的解释器执行过程 算术代码演示 public int calc() {int a 100;int b 200;int c 300;return (a b) * c; }javap 查看字节码 public int calc();descriptor: ()Iflags: ACC_PUBLICCode:stack2, locals4, args_size10: bipush 1002: istore_13: sipush 2006: istore_27: sipush 30010: istore_311: iload_112: iload_213: iadd14: iload_315: imul16: ireturnLineNumberTable:line 18: 0line 19: 3line 20: 7line 21: 11LocalVariableTable:Start Length Slot Name Signature0 17 0 this Ledu/aurelius/jvm/clazz/GrandFather;3 14 1 a I7 10 2 b I11 6 3 c I解释执行过程演示 执行偏移地址为 0 的指令bipush 将单字节的整型常量-128 ~ 127压入操作数栈顶这里是 100 执行偏移地址为 2 的指令istore_1 将操作数栈栈顶的整型值出栈并放入第 1 个局部变量槽后续 4 条指令做相同的事情这里略过 执行偏移地址为 11 的指令iload_1 指令将局部变量表第 1 个变量槽的整型值压入操作数栈后续 1 条指令做相同事情这里略过 执行偏移地址为 13 的指令iadd 将操作数栈的头两个栈顶元素出栈做整型加法并将结果压入栈顶 执行偏移地址为 14 的指令iload_3 指令将局部变量表第 3 个变量槽的整型值压入操作数栈后续 1 条指令对栈顶头两个元素做出栈、整型乘法、结果入栈的操作与 iadd 类似这里略过 执行偏移地址为 16 的指令ireturn 指令是方法返回指令结束方法执行并将操作数站定的整型值返回给方法的调用者 实际执行过程会经过解释器对字节码指令做合并、替换和即时编译器对字节码的一系列性能优化与上面的概念模型差距可能非常大这里仅演示栈架构指令集的一般运行过程中间变量以操作数栈的出入栈交换信息 上一篇「JVM 执行引擎」动态类型语言支持 下一篇「JVM 原理使用」 实际开发中的应用 PS感谢每一位志同道合者的阅读欢迎关注、评论、赞 参考资料 [1]《深入理解 Java 虚拟机》
http://www.hkea.cn/news/14455503/

相关文章:

  • 凡科做的网站好吗撩人的网站怎么做
  • 京东商城的网站怎么建设的网站建设 展滔科技大厦
  • 上海网站设计哪家好西安网页设计制作介绍
  • 商城开发网站免费个人网站建站源码
  • 框架布局技术制作一个网站从做系统后以前的网站打不开了怎么办
  • 住房和建设部官方网站网站建设接外包流程
  • 网站建设遇到问题解决方案猎头公司收费收费标准和方式
  • 怎么在电脑上做网站如何做营销策划方案
  • 网站建设的技巧淘宝网站建设的公司
  • 三亚婚纱摄影 织梦网站源码我的世界自己做披风网站
  • 专业做影楼招聘网站有哪些电子商务以后可以做什么工作
  • 个人建设网站流程做网站推广的需要了解哪些知识
  • 富阳网站建设推广上海外贸网站开发
  • 网站批量修改wordpress升级教程
  • 网站建设毕业设计总体规划wordpress 转发
  • 如何做2级网站中劵资本集团股票交易网站建设中
  • 商城网站 备案广西建设网官方网桂建云
  • wordpress 文章锚点株洲seo优化
  • 西安网站制作公司排营销型网站建设优化
  • 企业做网站需要注意什么建设网站贵吗
  • 怎么做有个捐款的网站网站设计软件有哪些
  • 购买网站模板怎么用备案官方网站
  • 大学生旅游网站策划书定制麻将app软件多少钱
  • 建设厅网站更改登陆密码郑州网站制作方案报价
  • 网站建设认知与理解华为网站建设策划书
  • 网站建设合同 印花税深圳罗湖网站制作公司哪家好
  • 建站公司杭州营销网址
  • 行业门户网站如何做长沙公司排行榜
  • 做网站有没有受骗过长春互联网企业
  • 杭州微信网站建设信息流优化师职业规划