从字节码层面看“HelloWorld”-编程开发技术

从字节码层面看“HelloWorld”-编程开发技术

ID:43747549

大小:165.18 KB

页数:16页

时间:2019-10-13

从字节码层面看“HelloWorld”-编程开发技术_第1页
从字节码层面看“HelloWorld”-编程开发技术_第2页
从字节码层面看“HelloWorld”-编程开发技术_第3页
从字节码层面看“HelloWorld”-编程开发技术_第4页
从字节码层面看“HelloWorld”-编程开发技术_第5页
资源描述:

《从字节码层面看“HelloWorld”-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、从字节码层面看“HclloWorlcT-编程开发技术从字节码层面看"HelloWorld”原文出处:liuxiaopeng一、HelloWorld字节码生成众所周知,Java程序是在JVM上运行的,不过JVM运行的其实不是Java语言本身,而是Java程序编译成的字节码文件。可能一开始JVM是为Java语言服务的,不过随着编译技术和JVM口身的不断发展和成熟,JVM已经不仅仅只运行Java程序。任何能编译成为符合JVM字节码规范的语言都可以在JVM上运行,比较常见的Scala>Groove、JRuby等。今天,我就从

2、大家最熟悉的程序“HelloWorld”程序入手,分析整个Class文件的结构。虽然这个程序比较简单,但是基本上包含了字节码规范屮的所有内容,因此即使以后要分析更复杂的程序,那也只是“量”上的变化,木质上没有区别。我们先直观的看下源码与字节码之间的对应关系:HelloWorld的源码:packagecom・paddx.test.asm;publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out・printin(^Ilello,World!;}

3、}编译器釆用JDK1.7:org.apache,maven,pluginsmavcn-compilcr-pluginl.7l.7编译以后的字节码文件(使用UltraEdit的16进制模式打开):oooooooo64665O7666O1oooEc>oo7C11O36CC1

4、7Eoooooooo3667766666OoBAoooo11BAD62F11C4O1oooooooo26O66726661ooo9F1ooo911195FEF4FoooBooooo57o2676657oooo2oooo766oFE4C7700Ccooooooooo6o67O6262o4ooo1o6ooo179411FFFo8oooooooo22765O647726c>2ooo5001FOF3OEF24o5oo1ooo2oo672716666o6oo2951AooC2F4572C5oCooooooBoo66574266

5、726123ooo71519O2CFA431CooBoooooO6676656O7O6oo6ocoooOEE25A35141Fooooooooo6766676O2O2oooooo1967491193OFOCoooooofohoooooloohooooolloh00000120h00000130h00000140h00000150h00000160h00000170h00000180h00000190hOOOOOlaOhOOOOOlbOhOOOOOlcOhOOOOOldOhOOOOOleOhooooolfoh00000

6、200h00000210h00000220h6C72O7O4oo66067500C

7、C4o156ooA6617166o66Oi1F59326F44cD1B5EO65B6257756OoOw1E98700462OioAOa4a562F66aOo1BO7cEBF00154o6EO3B664776774oOoFA7C249223600o4o6366676563oO0011BAC5394FCoo6o72667O66661O5o69143111497o6o65737O6666O3C>166B4O225EA3652O6O2

8、166O6ooC3F111FFCC19oo666O2o6466O712FFCoFo1c55o4002666a4O56O••oooooooooohooooooloh00000020h00000030h00000040h00000050h00000060h00000070h00000080h00000090hooooooaohOOOOOObOhOOOOOOcOhOOOOOOdOhooooooeoh红色框内的部分就是HelloWorld.class的内容,其他部分是UltraEdit自动生成的:红色框顶部的0~f代表列号

9、,左边部分代表行号,右侧部分是二进制码对应的字符(utf-8编码)。二、字节码解析要弄明白HelloWorld.java和HclloWorld.class文件是如何对应的,我们必须对JVM的字节码规范有所了解。字节码文件的结构非常紧凑,没有任何冗余的信息,连分隔符都没冇,它采用的是同定的文件结构和数据类型来实现对内容的分割的。字节码中包描两种数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。