易码技术论坛

 找回密码
 加入易码
搜索
楼主: yan

[原创](文曲星端 lav版)LAVAX1.0编译器-横空出世

[复制链接]
发表于 2005-9-20 12:43:00 | 显示全部楼层
你还是使用动态内存分配吧  自己写一个  要不内存吃的太紧

我的就比你的轻松多了啊  哎直接把源文件读到缓冲里遍好了

你还的考虑内存问题 还没有switch 另外txt文件格式还得区分开来

表达式是一定要分析的 这很好实现的 把表达式翻译成gvm的堆栈操作以后先进行一下相临常量与常量之间的运算 如果在翻译时引入了负号 也可以简化掉,一层一层优化就好了

gvm不支持指针这是最蠢的决定

gvm不支持函数指针这是写运用多线程最大的悲哀

gvm不支持inline函数使程序运行效率大大降低

gvm不支持switch语句这玩意 至少汇编的一大堆分支要比 伪汇编的一大堆if要快

gvm应该引用一种将局部伪代码载入内存后执行的机制,在某些地方这可以大大提高效率

gvm就有一个缓冲区这对某写游戏的设计造成了大大的不便

gvm的升级版并未改进重要的部分,而是靠硬件提升了可怜的性能

某个公司制作的IDE连0x20&0x40都不能翻译过来 真是可惜

某个模拟器在塞扬500上的执行速度与在奔四的执行速度有天大的区别以至于不能确定模拟器的速度跟某机器上的速度到底一不一样


更可气的是 某个人 做了某个东西后就觉得自己很了不起了 并且安与现状 不知进取

对新手冷眼相看 自以为是 骄傲自大

全靠某产品的开发界比较冷的原因占据市场 而自己却不知道成功的原因不是自己技术很厉害

而是没有高手去关注某产品的开发界

自己做的升级产品没有从本质上改变还是一样的烂 只是支持了新的硬件罢了

最重要还是推销新产品来让更多的钱以及更多的无知的支持而已

他已经不是最开始热爱星星的星迷了 成为了一个小心眼的商人


以上发言请求保留
发表于 2005-9-20 12:56:00 | 显示全部楼层
建议楼主能开发一种类似EVC的开发工具

能包含各种机器的库

在开发时能用同样的代码生成各种平台的不同的程序


可以利用虚拟机的"程序'不占用'内存"优势结合汇编来写wqx上的终极程序

这一切都是考验的策划能力设计能力以及耐力

还有资料收集能力以及学习能力


有PPC的朋友可以看一下Pocket GCC

我正在用他 他使用C++语言,EVC上的代码和库直接拽过来在PPC上就能编译

虽然不能说代码优化做的比m$的好 但是这绝对比PocketC好

目前作者似乎只做的ARM的版本,可能是他目前只学习了ARM 的指令吧


还有 我不是商人 不懂什么软件的版权和什么利益关系

我只知道我愿意让别人用我的程序罢了  我更希望大家用了我的东西都说好  这就已经满足我的可怜的虚荣心了

我将编程做为爱好我将写出来的程序做为作业 但我不把我写的程序当成饭碗

我以后也不想走程序员这条道,只是上课不愿意学习想拿点东西摆弄罢了


楼住做的这东西其实还算很有意义的

希望楼主熟悉怎么写编译器后靠自己的能力写一个全新的开发界面

为了造福大家啊,老机器上的lavax1.0太差劲了

但又不是每个人都愿意去买新机器的

既然我们不能靠别人写的xxxxx 2、3 那我们就自己来做

最起码这是个好理由罢了,当玩了,当练习了,当做是经验咯
发表于 2005-9-20 12:59:00 | 显示全部楼层
相信楼主能明白我的意思 楼住你在写编译器的时候也应该发现了吧

lava应该还有许多地方需要改进的 而这写东西在编译器这方面不是非常的难实现

 楼主| 发表于 2005-9-21 11:45:00 | 显示全部楼层
确实发现还有许多地方需要改进的。但是通过改进编译器只能解决表面问题。
 楼主| 发表于 2005-9-21 11:53:00 | 显示全部楼层
文曲星的硬件条件影响编译速度(虽然好的算法可以减少时间复杂度)。

非常感谢laugj,你提的建议我会好好考虑,毕竟我目前的能力有限。
发表于 2005-9-21 12:21:00 | 显示全部楼层
都能写编译器了就说明你已经入门了啊  你确实可以考虑自己创作一个平台啊

有很多资料的,慢慢学是没问题的!


如果你有 笔记本或是PDA的话开发起来会更加方便啊!

毕竟如果单纯是编译器的话 PDA和PC上的代码只有UNICODE和ASNI的区别了!

楼主加油 程序是需要不断改进的 不像某个人做的东西啊

M$的补丁也非常频啊!

发表于 2005-9-21 12:27:00 | 显示全部楼层
建议:

还是增加以下变量数的上限吧!不然写程序都要用数组了!

顺便问下:

楼上说的某个人是谁啊?
发表于 2005-9-21 22:13:00 | 显示全部楼层
我是laugj啊

我就是我了拉
发表于 2005-9-23 10:43:00 | 显示全部楼层
不懂!

我没问你是谁啊,谁不知道啊!

是你说的“不要像某个人。。”

问题:

用星际译站下载到TC800中的文本没法正常编译,用文本编辑打开竟然总出现乱码(回车后面的空格都会变成那样),有什么解决办法啊?

而且不支持数组做参数,能否解决?
发表于 2005-9-23 12:01:00 | 显示全部楼层
哦啊 看错了啊  

某个人谁你知道啊  大家都知道啊  地球人都知道啊
发表于 2005-9-23 12:23:00 | 显示全部楼层
lava 的 问题就不多说了,都知道

我的指针啊。。。。。



怎么引用自己写的宏??我将它放在KEYS里面

那么程序里面怎么调用?
 楼主| 发表于 2005-9-23 12:37:00 | 显示全部楼层
以下是引用gameghost在2005-9-23 10:43:00的发言:[BR]问题:
用星际译站下载到TC800中的文本没法正常编译,用文本编辑打开竟然总出现乱码(回车后面的空格都会变成那样),有什么解决办法啊?
而且不支持数组做参数,能否解决?


Y1.02版不支持数组做参数。目前只有pc端的LAVAX3.1IDE支持数组做参数。至于‘星际译站’的问题我没试过,文件也可以用SuperLink下载。
 楼主| 发表于 2005-9-23 12:42:00 | 显示全部楼层
以下是引用cassius在2005-9-23 12:23:00的发言:[BR]怎么引用自己写的宏??我将它放在KEYS里面,那么程序里面怎么调用?


比如你在KEYS文件夹放了F1_KEY这个宏,其值为28,那么写程序的时候就不用在程序的头部写#define F1_KEY 28了。可以直接调用这个宏,如:if(key==F1_KEY){......}
发表于 2005-9-23 13:18:00 | 显示全部楼层
oh!I see!Thanks!
发表于 2005-9-24 11:43:00 | 显示全部楼层
以下是引用yan在2005-9-23 12:42:00的发言:[BR]?
比如你在KEYS文件夹放了F1_KEY这个宏,其值为28,那么写程序的时候就不用在程序的头部写#define F1_KEY 28了。可以直接调用这个宏,如:if(key==F1_KEY){......}


可是他说未定义的XX  F1_KEY

奇怪把?
 楼主| 发表于 2005-9-29 14:50:00 | 显示全部楼层
你用的是什么版本的?

可能是Y1.02精简版的问题,我试过Y1.02正式版,修改版没问题的。
发表于 2005-9-29 18:21:00 | 显示全部楼层
你们都能用吗?

我的只能编译啊,不能运行啊,

所有循环都不能用啊,你们的行不行啊?请大哥们说一说啊
发表于 2005-9-29 22:42:00 | 显示全部楼层
你是TC800吧?1.4以前的吧,我的TC800在1.2的时候编译for就死机,要是的话就升下吧。

问个问题:System.SndPlay(long,long);怎么用,好象不像System.SndPlay(long,long,long);那样用,而且我一用就是以播放vnt的方式播放,怎么播放midi的数据呀?
 楼主| 发表于 2005-9-30 08:02:00 | 显示全部楼层
System.SndPlay(long,long);我给的函数格式只是作为参考。

已经有帖子介绍怎么播放midi。
发表于 2005-10-5 14:00:00 | 显示全部楼层
BUG汇报:

是不是不支持浮点啊,为什么报错说我用了":"

我明明没有啊
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-5-15 05:41 , Processed in 0.011920 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表