龙芯开源社区

 找回密码
 注册新用户(newuser)
楼主: huanghuihuang

道cpu、道指令、道编程基本原理

    [复制链接]
发表于 2009-7-3 09:02:45 | 显示全部楼层
哈哈哈
发表于 2009-7-3 09:04:19 | 显示全部楼层
每天好心情
 楼主| 发表于 2009-7-3 10:21:15 | 显示全部楼层
信息cpu的指令确定为如下的形式后:
[原信息1, 原信息2, 原信息3][ 原信息4, 原信息5]< 原信息6, 原信息7, 原信息8><原信息9, 原信息10>->生成信息。
(是否可以增加一个可选信息组形式以便减少编程时所用的指令的数量)
接下来的工作就是设计可运行的cpu。cpu既然是为了执行设计的指令的,我们必须规范信息和指令运行时行为,使得cpu设计有章可循。
暂定如下规范:
1、既取消指令指针,全部指令并行运行(包括函数、过程中的指令)。
2、取消循环结构,全部指令一直循环运行。
3、取消地址,数据以符号代替(可以增加数组结构的符号表示)。
4、取消数据类型计算。
5、信息可选永久保存在存储介质上。
6、信息可选赋值形式。
采取上述信息和指令运行时行为规范后,初定信息编程语言形式如下:

/*程序定义*/
procename{
/*函数定义*/
fuctname(param1,param1)(return1,return1)
{
     [标记1,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->dgdf  
     /*>twter表示任意数值,[] 内的表示激活逻辑条件,[][]表示逻辑或的形式,<>内的表示终止逻辑条件,<><>表示逻辑或的形式*/
    [twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->$dgdf  
    /*->$dgdf表示进程时间内永久保存(但可被更改)*/
    [twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->dgdf=356
    /*->dgdf=356表示产生的标记有数值*/

    [twter=898,fgdsgf=878,gfds][dfg,dfg]<sfgf=767,dfg,dfg><dfgdf,yu>->dgdf
    /*twter=898,fgdsgf=878表示有值*/
    [twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->(rrr=wwer,wsre=werwe)
    /*条件赋值,->(rrr=wwer,wsre=werwe)表示条件赋值形式*/
    [twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->(return1,return1)
    /*函数条件返回,->(return1,return1)表示函数条件返回形式*/
    [twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->procename.fuctname(wer,werwe)(return1,return1)
    /*函数条件调用,return(param1=wer,param1=werwe)表示函数条件调用形式  */
  }
}
在上述的信息编程语言中,程序是类,函数也是类的成员。

[ 本帖最后由 huanghuihuang 于 2009-7-3 10:36 编辑 ]
 楼主| 发表于 2009-7-3 18:27:16 | 显示全部楼层
以上信息编程语言中:
每个语句前面都带有如下形式:
         [原信息1, 原信息2, 原信息3][ 原信息4, 原信息5]< 原信息6, 原信息7, 原信息8><原信息9, 原信息10>
的前置逻辑比较,其含义就是每条语句都先判断、选择、比较,然后再决定是否生成"->"后的信息。除了简单生成信息语句外,还有调用、返回、赋值等语句,这些语句也是采用前置逻辑比较的形式,目的是为了满足全部指令运行的指令规范。
       指令与信息的设计很大影响了cpu结构设计。如信息生成后的保存形式,当信息生成后第二次在运行使用是否保存,极大影响了cpu结构设计也影响了指令编程,考虑再三后,决定采取可选的保存的形式既带“$”符号就一直保留,其他信息一般在第二次运行使用后就消除了;还有函数的调用方式,程序的函数指令在内存中只有一个,但是每个程序调用时就会产生多个调用,像类的定义,类的定义只有一个,而类的实例化可以有多个,为了满足同时并行运行的函数实例,必须在cpu上设置专用的调用栈内存;还有函数返回时必须处理的一些细节,因为函数指令编译后是固化的,它的返回信息符号必须与函数实例化后的句柄挂钩起来,并与原调用函数句柄有关,不像窜行指令,可以在栈顶存取函数的返回有关的值。
      可以说一套完整的指令集设计时就已经考虑到了以后的cpu设计,指令集里增加的功能,比如寄存器等极大影响了cpu的设计,相反cpu的计算功能反而是cpu设计最简单的东西。
      在信息cpu里设计,最大难题不在前置逻辑比较实现,而在于信息生成后如何处理,像重复信息符号处理、信息生存周期、信息的作用范围、信息的存取、信息的符号与值、cpu结构的优化等,所有这些技术处理与指令的含义有很大相关性。
声明:  有指令设计经验的人员请多向本信息编程语言的设计方案提意见
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2009-7-4 00:14:36 | 显示全部楼层
信息cpu的指令确定为如下的形式后:
[原信息1, 原信息2, 原信息3][ 原信息4, 原信息5]< 原信息6, 原信息7, 原信息8><原信息9, 原信息10>->生成信息。
(是否可以增加一个选择信息组形式以便减少编程时所用的指令的数量)
接下来的工作就是设计可运行的cpu。cpu既然是为了执行设计的指令的,我们必须规范信息和指令运行时行为,使得cpu设计有章可循。
暂定如下规范:
1、既取消指令指针,全部指令并行运行(包括函数、过程中的指令)。
2、取消循环结构,全部指令一直循环运行。
3、取消地址,数据以符号代替(可以增加数组结构的符号表示)。
4、取消数据类型计算,数据类型计算蕴含于程序函数中。
5、信息可选永久保存在存储介质上。
6、信息可选赋值形式。
采取上述信息和指令运行时行为规范后,初定信息编程语言形式如下:

/*程序定义*/
procename{
/*函数定义*/
fuctname(param1,param1)(return1,return1)
{
  [5361,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->dgdf  

   /*>twter表示任意数值,[] 内的表示激活逻辑条件,[][]表示逻辑或的形式,<>内的表示终止逻辑条件,<><>表示逻辑或的形式*/

[twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->$dgdf  

/*->$dgdf表示进程时间内永久保存(但可被更改)*/

[twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->dgdf=356

/*->dgdf=356表示产生的标记有数值*/


[twter=898,fgdsgf=878,gfds][dfg,dfg]<sfgf=767,dfg,dfg><dfgdf,yu>->dgdf

/*twter=898,fgdsgf=878表示有值*/

[twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->(rrr=wwer,wsre=werwe)

/*条件赋值,->(rrr=wwer,wsre=werwe)表示条件赋值形式*/

[twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->(return1,return1)

/*函数条件返回,->(return1,return1)表示函数条件返回形式*/

[twter,fgdsgf,gfds][dfg,dfg]<sfgf,dfg,dfg><dfgdf,yu>->procename.fuctname(wer,werwe)(return1,return1)

/*函数条件调用,return(param1=wer,param1=werwe)表示函数条件调用形式  */
  }
}

/*以上所有符号都是符号标记,可谓为中文英文*/
说明:

1、在上述的信息编程语言中,程序是类,函数也是类的成员。这样当程序完成后,就可以被其它或自己调用了,相当于windows中的“dll”模块或“lib”库。
2、每个语句前面都带有如下形式:

  
  
[原信息1, 原信息2, 原信息3][ 原信息4, 原信息5]< 原信息6, 原信息7, 原信息8><原信息9, 原信息10>
的前置逻辑比较,其含义就是每条语句都先判断、选择、比较,然后再决定是否生成"->"后的信息,除了"->"简单生成信息语句外,还有调用、返回、赋值等语句,这些语句也是采用前置逻辑比较的形式,目的是为了满足全部指令运行的指令规范。

指令的设计与cpu结构设计关联性。
1、指令信息保存形式。当指令信息生成后第二次再运行使用后是否保存,极大影响了cpu结构设计也影响了指令编程,考虑再三后,决定采取可选的保存的形式既带“$”符号就一直保留,其他信息一般在第二次运行使用后就消除了,相当于这些指令只是中间暂时信息。
2、函数的调用方式。程序的函数指令在内存中只有一个,但是每个程序调用时就会产生多个调用,像类的定义,类的定义只有一个,而类的实例化可以有多个,为了满足同时并行运行的函数实例,必须在cpu上设置专用的调用栈内存;
3、函数返回方式。函数返回时必须处理的一些细节,因为函数指令编译后是固化的,它的返回信息符号必须与函数实例化后的句柄挂钩起来,并与原调用函数句柄有关,不像串行指令,可以在栈顶存取函数的返回有关的值。
4 在信息cpu里设计,最大难题不在前置逻辑比较实现,而在于信息生成后如何处理,像重复信息符号处理、信息生存周期、信息的作用范围、信息的存取、信息的符号与值、cpu结构的优化等,所有这些技术处理与各种指令形式的含义有很大相关性。
5、函数调用、返回、信息赋值是信息生成一种特殊形式,其母的是为了信息程序的复用性,本质上没有破坏信息cpu指令只有一条的宗旨。
可以说一套完整的指令集设计时就已经考虑到了以后的cpu设计,指令集里增加的功能比如增加寄存器、寻址方法、结果值处理等、各种函数调用返回方式极大影响了cpu的设计,相反cpu的计算功能反而是cpu设计最简单的东西。一套指令集就是一套虚拟计算机,当实现了运行指令集的机器后,也就完成了虚拟计算机实例化。如计算机语言,语言也是一套虚拟计算机,编译程序把计算机语言编译成可执行文件,编译程序就是计算机语言的虚拟计算机。
多年来,国人常常听到cpu指令集只是一种东西不同的写法,购买指令集只不过是为了一些权宜之计采取的便宜措施,无关大碍,关键是要开拓市场云云。错了!君不见,当年各大国产汽车商也号称技术引进,更快开拓占领市场云云,最后各大国产汽车商也成了国外汽车技术代理商。二三十年年前国人以求学之心,满以为完成学业就可以创业了,没想到却从学生变成了学徒,最后成了打工仔。这种教训实在太多了,cpu指令集代表国外占领国内cpu技术市场的隐形杀手,冠于冠冕堂皇的技术授权,我们就如得了宝贝似的收下来,高兴地设计生产了。君不见,二三十年来,国人举国学英文,直弄的国语也差点忘了,只能写一点俄意奉承之类的话,到头来,国外技术没学家,又变成了假洋人了。
以《霍元甲》之歌“昏睡百年,国人渐已醒,睁开眼吧,小心看吧,哪个愿臣虏自认”与各位有志之士共勉。
发表于 2009-7-5 09:12:43 | 显示全部楼层
比夜店还精彩,哈哈哈。
 楼主| 发表于 2009-7-7 11:23:14 | 显示全部楼层
怎么没有人提点有关指令设计的建议?
发表于 2009-7-7 11:37:48 | 显示全部楼层
Are you serious?
发表于 2009-7-8 17:39:40 | 显示全部楼层
“道生一,一生二,二生三,三生万物”中的“道”只能是代表宇宙万物规律,“道生一”代表宇宙时间开始,诞生了最原始的宇宙物质“一”,“一”又在宇宙万物规律控制下产生“二”,有了“一”“二”后,就会产生他们之间的关系"阴阳"属性,“一”“二”和"阴阳"一起在产生“三”,“三”代表“一”“二”和他们之间的属性"阴阳",最后由“三”既“一”“二”和他们之间的属性"阴阳"产生宇宙万物。

楼主很有探索精神, 思维也很符合自然万物归宗的规律.

不过上面的话似乎缺乏证明: 一和二是如何产生? 阴是什么? 阳是什么? 阴和阳是如何产生? 而阴阳为什么能生万物?
 楼主| 发表于 2009-7-9 10:59:56 | 显示全部楼层
既然没有人来指出信息编程语言(道编程语言)的有关问题,本人提出几个影响语言设计的地方:
1、道编程语言中所有指令语句是并行运行的,不能像串行指令一样可以设置一个程序进入点,那么它如何开始运行的?
       道编程语言的开始运行决定于原始的一个信息,与这个原始信息有关既有“阴阳”关系的一条指令就可以开始运行了。为了编程及设计信息cpu方便, 道编程语言规定这个原始信息为:主.开始  或 master.start。这个原始信息就是“道”中的“一”。
2、道编程语言没有数据空间,没有数据的初始化,那么如何获取数据?
      道编程语言的所有数据都隐含于信息指令中,既由信息指令生成的,当原始信息生成后,每个有用信息数据就会在原始信息的作用下生成。这些初始信息就是“道”中的“二”。
3、道编程语言中如何结束程序的运行?
     道编程语言一旦开始就不能结束,但是可以在暂时信息的作用下,自动结束整个程序运行。
4、道编程语言没有数学计算功能,如何进行数学计算?
     普通cpu数学计算是由ALU处理的,道编程语言没有任何ALU处理单元,他是如何处理数学逻辑计算的。简单的数学逻辑计算由列表法进行计算,复杂数学逻辑计算由道编程语言函数封装处理。

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-6-25 01:20 , Processed in 0.186513 second(s), 16 queries .

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