Java字节码(一)

一、什么是字节码:

Java所有的指令有200个左右,一个字节(8位)可以存储256种不同的指令信息,一个这样的字节称为字节码(Bytecode)。字节码是由类型前缀和操作名称这两部分组成。

 

二、java字节码文件编码过程

在了解了字节码的含义之后,那么你是否想过一个问题,我们平时编写的是java文件,JVM运行的class文件,也就是字节码。一般这个转化IDE工具帮我们完成了,或者在命令行的情况下使用Javac命令进行编译。那么在整个编译过程经过了哪些步骤呢?如下图所示:

 

看到这里是否感觉比较眼熟呢。这里的步骤和编译器的翻译流程基本一致。在一层上也提现了知识的贯通性。越是底层的东西越是相互借鉴,想通的。

 

三、根据指令性质分类

按照指令性质可以由以下几种分类:

  • 栈操作指令,包括与局部变量交互的指令
  • 程序流程控制指令
  • 对象操作指令,包括方法调用指令
  • 算术运算以及类型转换指令

 

四、字节码文件结构

概况起来就是

Class文件头部

常量池区域

当前类的一些描述信息

属性列表

方法列表

attribute列表

 

五、总结:

字节码是真正运行在JVM上的命令,本文介绍了字节码的定义,以及从java文件到字节码的生成过程。介绍了指令的属性和字节码文件的结构。对字节码有一个初步的认识。在以后分析问题的时候多了一个方式来分析就是从最底层的字节码分析。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值