这段时间我研究了一下java虚拟机规范,感觉编写一款符合JDK1.4规范的java编译器并不是很难,理由如下:
1) java虚拟机中的指令是面向堆栈的结构,指令的操作数绝大部分都隐含在堆栈中,因此代码生成非常容易
2)java编译器不需要作任何优化,公共子表达式消除、循环不变量外提、寄存器分配等优化全部都是在虚拟机中进行的。如果使用lex/yacc等编译自动话工具的话,我觉得大家合作好的话用两个月(保守一点最多就3个月吧)就可以完成一个实用的java编译器了,我说的实用是指能够取代jdk 1.4版中的javac此外,我打算使用C语言来开发这款编译器,这样编译的速度也会比使用java编制的javac快很多啊,不知道我的想法对吗,CSDN的高手们谈谈想法啊。
1) java虚拟机中的指令是面向堆栈的结构,指令的操作数绝大部分都隐含在堆栈中,因此代码生成非常容易
2)java编译器不需要作任何优化,公共子表达式消除、循环不变量外提、寄存器分配等优化全部都是在虚拟机中进行的。如果使用lex/yacc等编译自动话工具的话,我觉得大家合作好的话用两个月(保守一点最多就3个月吧)就可以完成一个实用的java编译器了,我说的实用是指能够取代jdk 1.4版中的javac此外,我打算使用C语言来开发这款编译器,这样编译的速度也会比使用java编制的javac快很多啊,不知道我的想法对吗,CSDN的高手们谈谈想法啊。
john_sheep(彩虹勇士)
谢谢2位支持如果你说要开发一个汇编编译器我还相信...java...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
to千金散去还复来:你凭啥看不起人!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我们要做的是Java编译器又不是去做JIT编译器,把Java程序翻译成非优化的字节码并不复杂啊哈哈,裤衩牛人!
~~~~~~~~~~~~~~~~
什么叫作裤衩牛人啊?
最后我想说的是,我想召集一些高手共举大事,希望没兴趣的人不要说风凉话!!!
假设X86指令的平均长度是5个字节,
那么50K的可执行文件就包含有10000(50K/4)条机器指令假设每行C语句被翻译成5条机器指令(平均情况),
那么10000条指令相当于2000行C语言代码javac.exe再简单,也不可能用2000行C代码就搞定吧,好歹也是个编译器啊。
有高手知道为什么吗?
javac只是一个启动器
实际解释不是它
我3个月以后来关注一下这个帖子,看看你开发的编译器运行效果怎么样。
javac只是一个启动器
实际解释不是它
~~~~~~~~~~~~~~~~~~~
什么意思啊,实际解释不是它,那是谁啊?
不是我想鄙视你,你连javac都搞不清楚,还3个月不到开发java编译器。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
大家都穿一条裤衩,你有什么牛鼻的地方呢?我也不想鄙视你。
javac.exe的源代码在哪里?
谁有javac的源代码
请发到.cn,小弟提前谢谢了。
to:java_bian_yi_qi()
我虽然一个裤衩,但是知道javac是个什么,你什么都不知道还大言不惭的说保守估计3个月不到开发编译器。我鄙视吹牛的人怎么了。
~~~~~~~~~~~~~~~~~~~~~~~~
诚心请教您javac是个什么东东,
为什么只有50K,
它的主体在哪里啊,
javac的源代码在哪?我鄙视吹牛的人怎么了。
~~~~~~~~~~~~~~~~~~~~~~~~~~
我上大学的时候看过编译器的龙书,
并不是你想象中的什么都不知道啊
觉得像java编译器那样不做优化应该不难吧
javac确实没有做优化,
通过javap -c命令反汇编java编译器产生的字节码可以证实这一点。我没有说是一个人做啊
现在研一,时间比较多
感觉拉几个高手大家一起搞,
大家几个月应该能搞定的。PS: javac.exe的源代码在哪里? 有人知道吗
我觉得你不是在找人合作开发编译器,而是希望别人怎么指导你开发编译器。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用不着这样讽刺人吧,我很清醒。我现在已经开始动手写代码了,如果实在没人愿意参与的话,我就单干了,哎,CSDN让我很失望。
可惜我實在不會,不菜一個,不然我一定來一個..KK
建议你去研究二进制码注入(class注入),AspectJ正是火的时候,为AspectJ编译器提点性能作作贡献也不错。
JVM规范早看过了,实在没有楼主那么有雄心啊,哈哈,佩服!
lrcheng999
hdhmail2000(禅剑飞雪)
谢谢你们,我已经开始动手做了,做完之后,我在来向大家汇报。其实吧,,做个bat 保守估计1个星期 就ok了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有话直接说,不用拐弯摸脚的,为什么中国人总是看不起中国人呢?
重要的是你有了一个想法,并且能够不断的坚持下去.
知道编译器是怎么处理的不?
知道这牵涉一系列算法不?
知道这其实不是那么容易的不?
知道javac是比你牛百倍的人写的不?
知道就算你写出来也没多大意义不?
先花个几个月时间了解了解再谈其他吧!!