Java字节码与Dalvik字节码

本文介绍了Java字节码与Dalvik字节码的区别,强调了JVM的字节码无关性和class文件结构,包括常量池、访问标志、字段、方法和属性表。Dalvik字节码采用寄存器结构,而Java字节码基于栈,导致两者指令集和代码大小的不同。
摘要由CSDN通过智能技术生成
  1. JVM语言无关性

  • JVM只与字节码关联,而不与Java语言直接关联。事实上,JRuby,Groovy等语言也可以由相应的编译器编译为字节码,然后由JVM解释执行。甚至可以自己写一个class字节码文件,然后由JVM来执行。
  1. class类文件结构

  • 任何一个class文件都对应着唯一一个类或接口的定义信息。

  • class文件是一组8字节为基础单位的二进制流,各个数据项完全按照规范要求排列,中间无空隙。数据项只有两种:无符号数和表。

    • 无符号数分为u1,u2,u4,u8

    • 表是多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都以_info结尾。

    • 由于中间无空隙,所以要表示同一类型,但长度不确定的数据时,一般会将数据长度放在前面,后面紧跟数据。

  • 字节码结构

这里写图片描述

  • magic:4B,标示是Java class文件,为0xCAF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

谢杨易

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

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

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

打赏作者

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

抵扣说明:

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

余额充值