- 浏览: 5566 次
- 性别:
- 来自: 广西
最新评论
文章列表
011RJPOS:完成了最小jvm的开发
- 博客分类:
- RJPOS
在业余时间,断断续续地写了相近1年的时候,最小的JVM组件终于在今天开发完毕。
一、JVM特点
(一)支持多线程
(二)支持monitor
(三)支持异常机制
(四)支持类和实例对象,支持static函数和数据成员
(五)支持垃圾回收
(六)支持标准的java语法生成的class
(七)最小类库(后期加入的都不是必须的)
java.lang.Object.class
java.lang.String.class
java.lang.Throwable.class
java.lang.Exception.class
java.lang.AbstractMethodErr ...
至此,JVM的开发已接近了尾声。今天设计了自己的Thread类库,支持以任意的java类函数或类实例函数为执行代码段创建子线程。
一、Test8.java(提供子线程的执行代码段)
import com.rjos.driver.Text;
public class Test8
{
/*
以类函数为子线程的执行代码段
*/
static public void TestClassThread1()
{
while(true)
{
Text.printf ...
2015年2月8日开发进展
一、实现
1.jvm的Ldc2_w、LDC、NewArray、invokevirtual、ifnonnull、arraylength、ireturn、iload_3、Sipush、iinc、ifgt、invokestatic指令;
2.jvm支持String;3.简单的:java/lang/Throwable.class、java/lang/Exception.class、java/lang/RuntimeException.class;
二、发现并修复
1.调用函数的指令时,对参数的解析。
2.jvm的invokespecial指令中,参 ...
经过了四天的调试,未发现程序有任何问题。今早起来,无意中用javabite查看类的常量池时,发现遇到long和double项后,其后项的索序号+2;为此再次打开jvm规范查看,果然需要+2,对比程序的业务逻辑,我未进行相应处理。至此发现bug的原因所在。
2015年1月23日开发进展:
一、修复bug
1.修复加载器的BUG,存在的BUG是:在从常量池获取常量项时,遇到long或double的项(索引为n)时,其后的项的索引未记为n+2。
2015年1月20日开发日志
一、优化
1.对公共的解析操作进行了封装,提高代码重用率;
二、实现
1.优化类文件加载到内存程序,增加应用程序类及系统类的加载;
2.增加pc的设置程序;
3.实现了jvm的Istore_3、istore、GOTO指令
三、发现但未解决的bug
1.加载器在加载部分类的时候,解析类文件不正确;
2015年1月16日开发进展
一、修复BUG:
1.创建类对象时(调用类的clinit方法时)各帧的顺序不可预知;
二、发现并修复BUG
1.jvm的Putstatic指令的实现中,从栈取值时未检验是取2个slot的值还是1个
三、实现了
JVM的putfield、lconst_1、Astore_1、Iload_1、Astore_2、bipush指令
ps:周末出去玩,周一再更新了。
2015年1月15日开发进展:
一、发现并修复BUG
1.invokespecial指令的实现;
二、优化
1.根据索引获取常量池常量的算法;
三、实现
jvm的aconst_0、aload_0、iconst_1指令
四、发现但未修复BUG
1.如果类有数据类型不是原始数据类型的static成员时,创建类对象时(调用类的clinit方法时)各帧的顺序不可预知。
2015年1月14日开发进展:
优化:
1.进程和线程调度算法。
实现:
1.JVM对函数参数的解析。
2.JVM的invokespecial指令。
003 RJPOS:增加jvm的6个指令的实现
- 博客分类:
- RJPOS
2015年1月13日开发进展:
实现了putstatic、return、iconst_2、iconst_3、new、dup指令.
修复BUG:
解析class文件的field列表时,最后一个field解析不正确。
发现并修复BUG:
类对象和类实例对象获取某个成员变量时的业务逻辑错误。
你可以直接运行附件中的程序,java/lang/Object.class为类库,java/app/Test.class为系统默认调用应用程序(唯一的应用程序),java/app/Test2.class和java/app/Test3.cla ...
002 RJPOS:完成jvm对象的设计
- 博客分类:
- RJPOS
2015年1月11日开发进展:
一、实现了类对象、类实例对象、类对象管理器、类实例对象管理器
二、实现了iconst_5指令, putstatic指令未完全实现.
已知BUG:
解析class文件的field列表时,最后一个field解析不正确。
你可以直接运行附件中的程序,java/lang/Object.class为类库,java/app/Test.class为系统默认调用应用程序(唯一的应用程序),java/app/Test2.class和java/app/Test3.class为Test的父类。附件中的截图系统正在执行的是Test的父 ...
000关于RJPOS
- 博客分类:
- RJPOS
RJPOS
rjpos(running java program 's operater system),既"运行JAVA应用程序的操作系统",它目前还处于开发阶段,由“沃土”(网名,QQ:601577724,email:yee189@189.cn)在windows平台下独立开发,通过windows的api模拟硬件接口。开发工作就是先后实现以下相关功能模块: V一、进程管理与调度 V二、线程管理与调度 V三、类加载器和类管理器 V四、类对象生成器和类对象管理器 V五、类实例对象生成器和类实例对象管理器(在其之 ...