![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
文章平均质量分 71
第二月
这个作者很懒,什么都没留下…
展开
-
KVM的执行引擎(下) — 指令集
指令集是虚拟机中最底层也是最核心的部分,Java程序中的变量赋值、函数调用等所有操作最后都要被转化为一条条的指令来执行。指令集是在Java虚拟机规范中定义的,各种虚拟机实现要给予精确的实现,下面就来介绍一下指令集的分类以及在KVM中是如何实现的。在头文件kvm/vmcommon/h/interpret.h中有如下对指令集种类的定义: typedef enum {原创 2006-08-31 17:22:00 · 1980 阅读 · 1 评论 -
KVM的执行引擎(上) — 栈和帧
接下来的两篇将介绍在KVM中字节是如何执行的,这是KVM中比较核心的内容,分为两部分来讲,本篇先介绍虚拟机中的栈和帧是如何实现的。 首先来看一些全局指针,在头文件kvm/vmcommon/h/interpret.h中定义有以下结构:struct GlobalStateStruct { BYTE* gs_ip; /* Instruction pointer (原创 2006-08-31 08:39:00 · 1285 阅读 · 0 评论 -
KVM简介
KVM(K Virtual Machine)是SUN公司的一种主要面向嵌入式设备的小型Java虚拟机,在PC机上也能使用。KVM最大的特点是极为小巧,只有一个可执行文件,大概200K多一点。相应地,KVM的功能也很弱,它只有cldc1.1的类库,所以没有图形界面;它也没有采用优化技术来提高性能,是一种比较原始的虚拟机。正因为KVM的小巧和简单,它是Java爱好者研究虚拟机的理想入门教材。而原创 2006-08-28 22:36:00 · 1800 阅读 · 0 评论 -
KVM的编译
编译过程: 以PC-Linux平台为例,编译用的主Makefile在build/linux目录下,在默认的情况下,只要系统中安装有gcc,输入make命令就可以完成编译,并在kvm/VmUnix/build目录下生成可执行文件kvm。Kvm本身就是完整的可执行文件,不需要依赖于其它的库和文件。查看build/linux目录下的Makefile文件,可看到make会分别再到其它4个目录中再去原创 2006-08-28 22:40:00 · 1784 阅读 · 0 评论 -
KVM的扩展
KVM本身只带有cldc1.1的类库,功能十分简单,不能满足用户的需求,本篇介绍如何对KVM进行扩展。对KVM进行扩展,在Java层十分简单,只要向在编译Java代码时多加一个文件就可以,没什么要说的,麻烦的是如果在加入的Java类中有本地操作该怎么办?本地的C语言代码放在哪里编译才能够供KVM调用?答案是KNI。下面就以KNI为主要内容介绍如何对KVM加以扩展,在最后附加一个具体的原创 2006-08-28 22:54:00 · 2705 阅读 · 0 评论 -
KVM的类加载
首先简要介绍一下class文件的结构(详细内容请参考Java虚拟机规范,在《深入Java虚拟机》一书中也有详细描述): 长度(字节) 名称 解释原创 2006-08-28 22:59:00 · 1213 阅读 · 0 评论 -
KVM的常量池
在class文件中,“常量池”是最复杂也最值得关注的内容。Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如:类和接口的全限定名;字段的名称和描述符;方法和名称和描述符。在C语言中,如果一个程序要调用其它库中的函数,在连接时,原创 2006-08-28 23:05:00 · 1160 阅读 · 0 评论 -
Security of Embedded Java Virtual Machine
Security of Embedded Java Virtual MachineThis article introduces the security of embedded Java virtual machine (EJVM).Meeting this topic, you may consider it an introduction of J2ME security mecha原创 2008-07-02 17:38:00 · 1892 阅读 · 0 评论