JVM执行引擎: 中间语言翻译

本文详细介绍了JVM如何将中间语言(字节码)转换为机器码,包括直接解释执行和通过Hot Spot即时编译的方式。中间语言的使用旨在实现跨平台兼容性,而JIT编译则用于提高性能,对频繁执行的代码进行编译以提升执行效率。
摘要由CSDN通过智能技术生成

   

目录

中间语言转换

中间语言到机器码

直接到机器码

即时编译-Hot Spot


   

        这篇日志把JVM中的中间语言转换总结一下,看看从中间语言转换成机器码的方式是怎样的。方法是程序最基本的单元,由指令的集合组成,在Java里就是字节码的组合,即对字节码的封装,JVM在进入一个Java方法后,将每一条字节码指令取出,逐条按顺序执行,例如基本四则运算,与或非,左移右移等,不过JVM的方法调用不像CPU执行原子指令那样,直接跳到对应的方法代码段,而是先把Java代码编译成中间语言-字节码,接着在程序运行过程中动态将字节码指令解释成机器指令,所以JVM最后执行的就是一堆机器指令,这样做的目的是实现兼容性,在一个平台上完成的代码,在另一个平台上依旧可以解释运行。

        兼容性的实现方式,拿C来举例,C实现兼容性的方式是在不同的操作系统上面使用不同的编译器来编译,例如在Windows上通常用mingw,Linux上用gcc编译,gdb来调试,Windows上加锁操作调用的API是CreateMutex(),Linux是pthread_mutex_lock();Windows上创建信号量是CreateSemaphore(),Linux上是sem_init()。C语言这种方式实现的兼容性,靠的是在不同的操作系统环境下开发不同的编译器,编译器能够将同样的一段C程序编译成当前平台、操作系统匹配的机器指令,程序员如果想要开发兼容Windows和Linux的程序,必须熟练两套不同的API,总的来说,“成本”太高。

 

中间语言转换

        像Java,C#这类的高级语言编写的程序,都是先被编译成中间语言,再由虚拟机解释运行,程序运行过程中实时将字节码指令集翻译成机器指令,这样做的好处是,无论你在Windows,Linux还是其他平台上,编写的Java程序源代码都会被编译成同样的中间语言-字节码指令集&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值