[java虚拟机]--(2)字节码文件--(1)字节码文件存在的意义

本文探讨了C++应用从源代码到机器码的过程,并详细解释了字节码文件的意义及其实现应用的可移植性的方式。通过引入虚拟机的概念,文章阐述了如何通过虚拟机的指令集和字节码文件格式实现跨平台运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:

Author:赵志乾

Date:2018-6-18

Declaration:All Right Reserved!!!



背景知识:

    C++应用经过编译、链接等步骤,最终生成机器码文件,也称做可执行文件。这类文件其本质是一组指令的组合,如精简指令集、复杂指令集等。不同的指令集对应着不同的硬件架构实现,这也就导致机器码文件同具体的底层硬件耦合在一块。当需要将C++应用迁移到不同的平台上运行时,就需要使用不同的编译器进行重新的编译、链接,进而得到同硬件适配的机器码文件。


字节码文件存在的意义:

    统一底层的硬件,来实现应用的迁移,这一点不太现实(各个芯片厂商都在主推自己的架构)。为此就需要提供一个抽象层,来屏蔽底层的差异。而虚拟机便充当了底层硬件的抽象层。

    虚拟机拥有一套属于自己的指令集,称作字节码指令集。上层应用都将转化为这一指令集的组合。同时,通过定义字节码文件格式来规范中间指令的存储。进而使得虚拟机拥有对外一致的指令集、指令存储、指令加载和指令执行行为。以期获得上层应用的可移植性。

    虚拟机对外提供的是一组统一行为,其具体实现取决于不同的虚拟机厂商以及不同的底层平台。即不同平台使用不同的虚拟机实现进行适配。

注:字节码只是虚拟机指令的一种称谓,因为虚拟机指令以8位字节为单位,而得名字节码。


邮箱:zhaozhiqian001@163.com

参考资料:《深入理解java虚拟机》--周志明



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫白小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值