现在编译器相关的部分就剩下 luac.c 中的 do_dump 函数的分析了。 这个函数里面主要有两种调用,存储字节码和打印字节码。 先来看一下打印字节吧,要打印字节码,需要在编译器的命令行选项中有 "-l" 选项。 stat...
分类:
其他好文 时间:
2014-10-11 16:33:26
阅读次数:
210
这篇文章是从 OpenJDK 源码的角度讲当我们执行了java -classpath . hello之后,java.exe 怎样从 main 函数開始运行,启动虚拟机,并运行字节码中的代码。实验环境要了解一个系统是怎样执行的,光看是不行的,要实际地执行,调试,改动才干对系统的动作方式有所了解。起初我...
分类:
编程语言 时间:
2014-10-10 22:33:14
阅读次数:
522
C/C++等纯编译语言从源码到最终执行一般要经历:编译、连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对中Class类文件的加载、连接都在运行时执行,虽然类加载和连接会占用程序的执行时间增加性能开销,但是...
分类:
编程语言 时间:
2014-10-09 14:45:38
阅读次数:
162
Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不...
分类:
编程语言 时间:
2014-10-09 14:41:58
阅读次数:
348
src.zip:jdk的源代码文件(存在安装jdk的目录)。rt.jar:jdk的class字节码包。Eclipse中是通过rt.jar包与src.zip建立关联的。没关联之前想查看源代码提示如下:可以看到rt.jar是与src.zip要关联具体步骤:1.Windown->Preferences->...
分类:
系统相关 时间:
2014-10-07 01:56:12
阅读次数:
174
1.概述 今天在看java关于调用本机代码子程序来获得较快的执行时间,或者,你希望用一个专用的第三方的库,例如统计学包。然而,因为Java程序被编译为字节码,字节码有Java运行时系统解释(或动态编译),看起来在Java程序中调用本机代码子程序是不可能。幸运的是,这个结论是错误的。Java提供了n....
分类:
编程语言 时间:
2014-10-04 13:29:06
阅读次数:
345
JDK(JavaDevelopmentKit)是Java语言的软件开发工具包(SDK)。JDK包含的基本组件包括:javac–编译器,将源程序转成字节码jar–打包工具,将相关的类文件打包成一个文件javadoc–文档生成器,从源码注释中提取文档jdb–debugger,查错工具java–运行编译后的java程序(.class后缀?.
分类:
其他好文 时间:
2014-10-01 13:19:51
阅读次数:
190
一、类载入器首先来看一下java程序的运行过程。 从这个框图非常easy大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘其中。然后你在命令行中输入javac YourClassName.java此时,你的java代码就被编译成字节码(.class).假设你是...
分类:
编程语言 时间:
2014-10-01 11:23:41
阅读次数:
281
总结:Java跨平台,原因是相同的字节码文件在不同的平台上的不同的Java虚拟机解释执行的,没有虚拟机,就只好“呵呵”了。...
分类:
编程语言 时间:
2014-09-28 00:27:40
阅读次数:
194
运行时数据区:程序计数器:当前线程所执行的字节码的行号指示器,如果正在执行的是Native方法,这个计数器值则为空。Java虚拟机栈:用于存储局部变量表(基本数据类型、对象引用和returnAddress类型)、操作数栈、动态链接、方法出口等信息,是线程私有的,它的生命周期与线程相同。本地方法栈:N...
分类:
编程语言 时间:
2014-09-27 10:37:49
阅读次数:
189