|
楼主 |
发表于 2012-5-19 15:28:44
|
显示全部楼层
// APO应用程序框架
// 源代码节点构成一棵源代码节点树。描述对象的行为,状态等;main是根节点。
// 源代码描述文档JDMUF节点描述符的定义:由编译器据源代码描述文档生成的32位即是2字的机器指令码
// 或子程序指针。文档中的所有行都是属性节点或属性标签行。通常是汇编指令或子程序。
// 在开发APO应用程序的过程中有一些重要的步骤:
// *用A语言编写main()函数和相关的窗口函数。
// *创建菜单、对话框和其它资源并把它们放入资源窗口描述文挡。
// *使用Unicode编译器中的编辑器来创建对话框等。
// *用项目文件来编译并链接所有的A源程序和资源文件
// APO需要一个main()函数。这是应用程序开始执行和结束的地方。
main{ // 代码根节点,JDMUF根节点(进程)描述符由内核定义。
初始化函数(); // JDMUF节点描述符为由编译器产生的2字的节点指针。
SNP对象通信线程(); // 0号消息处理线程。
鼠标键盘消息处理线程(); // 1号消息处理线程。
定时器消息处理线程(); // 2号消息处理线程。如需要处理定时器消息则增加这一个线程。
中断消息处理线程(); // 3号消息处理线程。如需要处理中断则增加这一个线程。
用户线程4(); // 4号用户处理线程。如需要则增加,一切随意。
。。。。。。。。。。。。。。。。。。。。。。
用户线程N(); // N(<=63)号用户处理线程。
}
//进程,线程的切换由内核执行。使用Unicode编译器,可处理中文标称。
SNP对象通信线程{ // 只处理进程间的通信消息。
。。。。。。。。。。。。。。。。。。
}
//消息循环:适用于1,2,3号消息处理线程。
BU32 msg; // 消息循环表中的32位消息变量
XXX消息处理线程{
获取消息(); //从消息循环表中取消息,返回msg到R1寄存器。
转移指令(CMP(R1,0X感兴趣的消息值), DST); // 相等转移, DST为标号(地址)或绝对地址如0X1234,处理感兴趣的消息。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
}
// 不要把消息处理想的太复杂,打个简单的比方:假如你是一位接线员,在你前面的桌上有很多部电话,
// 那么你要做的是:有电话响时就接电话,没有电话响时就什么都不做。是不是很简单!其实消息处理也就
// 是这个道理。
// 消息通知一个应用程序发生了一个事件。从技术上来讲,消息不仅仅是与应用程序相关,而且是与应用
// 程序的某一特定窗口有关。与WINDOWS的所有的消息都被发往窗口不同,APO用另一方式。
// APO 不使用消息队列;也不会将消息处理方法封装到具体的对象中。APO追求的是尽可能少的代码量。
// 相当于WINDOWS操作系统功能的代码量估计不到8K字,而不会象WINDOWS的以GB为单位。8K字,4K行的代码
// 也是非常恐怖的事啊。
// 我的个性喜欢简单,对于砖头级的书本通常只看开头与目录,想进一步了解的话多半是看网上的通俗介绍
// 文章;之后靠想象。我的印象中单片机项目做过3次;VB,C#做过1次;没用过C。其它的那些对我来说都是
// 很遥远的梦。多年前,对JAVA曾有过“3分钟激情”,但看到后面的一堆砖头,小生怕怕,赶紧退缩。那要
// 浪费多少看小说,玩游戏的时间啊?几年前的一个项目,请别人来用JAVA来编写,总算了结了一点心愿。
// 说实在我看到那些鸡鸭肠子般的代码通常会想睡眠。同样,为使人脑能更清晰阅读的XML,又使我再次产生
// “3分钟激情”。而往后看,一个字”晕“。看看,那个MS已经把软件界搞到一塌糊涂了,就像精简机构一
// 样越精越复杂。天啊!我只想看到简单的能理解的“软件”,就象看小说一样。我的超脑什么时候才能实
// 现啊!这几年我做建筑节能,成果多多,推广则困难多多。即使LED驱动电源做到世界第一也是没多少用。
// 这就是我们的现状。也许MS是对的,就是要复杂化,才能捞鱼。
|
|