编程语言是怎样开发出来的???VB,C++ 之类的 汇编等 java 100
硬件不同开发出来的编程语言也不一样?不知,我说的对不对??那根据硬件就怎么就开发出只需要简单的英文字母输入就能控制电脑输出结果???...
硬件不同开发出来的编程语言也不一样?
不知,我说的对不对??
那根据硬件就怎么就开发出只需要简单的英文字母输入就能控制电脑输出结果??? 展开
不知,我说的对不对??
那根据硬件就怎么就开发出只需要简单的英文字母输入就能控制电脑输出结果??? 展开
展开全部
编译器是软件开发中的核心部件,其作用是其他任何软件所不能取代的。编译器在工作过程中,往往完成如下的任务:
1、读取源代码并且获得程序的结构描述
2、分析程序结构,并且生成相应的目标代码
在UNIX早期时代,编写一个编译器是一件非常耗时的工作。人们为了简化开发过程,开发了Lex和YACC程序来解决第一个任务,根据用户描述的语言,生成能够解决问题的C/C++语言代码,供开发者使用。
1、将源代码文件分解为各种词汇(Lex)
2、找到这些词汇的组成方式(YACC)
GNU软件协会开发了Flex和BISON,其功能与LEX和YACC基本兼容,并且在Lex和YACC提供的功能的基础上进行了各种扩展
1、读取源代码并且获得程序的结构描述
2、分析程序结构,并且生成相应的目标代码
在UNIX早期时代,编写一个编译器是一件非常耗时的工作。人们为了简化开发过程,开发了Lex和YACC程序来解决第一个任务,根据用户描述的语言,生成能够解决问题的C/C++语言代码,供开发者使用。
1、将源代码文件分解为各种词汇(Lex)
2、找到这些词汇的组成方式(YACC)
GNU软件协会开发了Flex和BISON,其功能与LEX和YACC基本兼容,并且在Lex和YACC提供的功能的基础上进行了各种扩展
展开全部
不论运行在什么硬件上,编程语言是相同的(除了汇编语言之外),因为“语言”是一种逻辑,与硬件无关。根据机器的不同而不同的,是将“逻辑”真正变成“程序”的编译器。
每一种语言有其固定的语法,某种语言在某种机器上的编译器的工作,就是分析用户输入的程序(并找出错误,如果有的话),然后翻译成该种机器的指令码。
也就是说,高级语言编写的程序在运行时,并不是运行用户写的“代码”,而是经由编译器翻译过的二进制汇编指令码。这种指令码因机器不同而异,因此要用不同的编译器(或者说是XX编译器的XX版)。
举个例子,C语言里的“int a=0;”
编译器在编译到这一行时,发现"int"是要定义一个新变量,接着往后读发现名字是“a”。接着查找已定义变量表看有没有重名的,有就报错。在没错的情况下,编译器为程序的数据空间增加一个int值的大小(这里就出现“因机器而异”的情况了,不同电脑int大小是不一样的),在变量表里增加“a”的记录,并记录下增加的空间的地址。然后再往后读,发现赋了初值0,于是把那个空间填上0。之后,编译器遇到分号,说明一条语句结束,接着处理下一条。
注意:上面的说明为了便于理解,没有区别编译过程中的各个部分,如预处理器、编译器(不同于刚才所说的)、汇编器、链接器等等,而是用了“编译器”统称。另外也省略了目标文件等具体编译过程的介绍,只是提供了一个大概的概念。关于各部分的详细介绍还请百度。
楼上tseug你这是复制的吧⋯⋯⋯⋯⋯⋯不切题啊⋯⋯
每一种语言有其固定的语法,某种语言在某种机器上的编译器的工作,就是分析用户输入的程序(并找出错误,如果有的话),然后翻译成该种机器的指令码。
也就是说,高级语言编写的程序在运行时,并不是运行用户写的“代码”,而是经由编译器翻译过的二进制汇编指令码。这种指令码因机器不同而异,因此要用不同的编译器(或者说是XX编译器的XX版)。
举个例子,C语言里的“int a=0;”
编译器在编译到这一行时,发现"int"是要定义一个新变量,接着往后读发现名字是“a”。接着查找已定义变量表看有没有重名的,有就报错。在没错的情况下,编译器为程序的数据空间增加一个int值的大小(这里就出现“因机器而异”的情况了,不同电脑int大小是不一样的),在变量表里增加“a”的记录,并记录下增加的空间的地址。然后再往后读,发现赋了初值0,于是把那个空间填上0。之后,编译器遇到分号,说明一条语句结束,接着处理下一条。
注意:上面的说明为了便于理解,没有区别编译过程中的各个部分,如预处理器、编译器(不同于刚才所说的)、汇编器、链接器等等,而是用了“编译器”统称。另外也省略了目标文件等具体编译过程的介绍,只是提供了一个大概的概念。关于各部分的详细介绍还请百度。
楼上tseug你这是复制的吧⋯⋯⋯⋯⋯⋯不切题啊⋯⋯
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的第一个问题是错的。硬件不同可以开发出同一种语言,
尽管CPU,内存,硬盘,主板等设备不同,运行了windows操作系统,都可以用C语言来开发。
同时,就算同一个硬件也能运行不同的语言。
如:同一台电脑可以支持各种不同的语言VB,C++,C,JAVA语言。
总结:语言和硬件是无关的。
最后一个问题。
你说的这个功能其实就是汇编语言达到的效果,通过简单输入英文字母控制电脑。
汇编语言上的mov push等指令也叫助记符,是帮助记忆的,每一条汇编语言指令都是由机器码对应的,比如:在win32中汇编指令push ESI ;将ESI寄存器压入堆栈。他的机器码就是56.这个是56是16进制数。
CPU只认识56这个机器码,它不认识PUSH ESI;这个字符串。但是我们人对56这个机器码又不方便记忆。所以有了汇编语言,同时又有了,将汇编语言转化成机器码的工具。
刚才大概介绍了下PC机的工作原理,我们接下来就可以解决楼主的问题了。
1、要知道这个硬件CPU支持的指令集。就是56对应做什么工作。一般这个指令集有几百条。硬件不同,指令集可能不同。
2、需要一些楼主喜欢的英文字母,用来当做指令。比如说yazhan E(大小写无关)
3、需要一个工具,将yazhan E变成56。这往往会有一个表指示yazhan E就是56(这个表需要自己构造)。
4、搞定了。用个文件,写入,yazhan E 再经过工具翻译,就变成56了,CPU就认识yazhan E这个指令就是将 ESI压入堆栈。
注:以上这个过程只是理论性的。实验性很小。不是说实验做不了,是太麻烦。
还有什么问题欢迎追问。
尽管CPU,内存,硬盘,主板等设备不同,运行了windows操作系统,都可以用C语言来开发。
同时,就算同一个硬件也能运行不同的语言。
如:同一台电脑可以支持各种不同的语言VB,C++,C,JAVA语言。
总结:语言和硬件是无关的。
最后一个问题。
你说的这个功能其实就是汇编语言达到的效果,通过简单输入英文字母控制电脑。
汇编语言上的mov push等指令也叫助记符,是帮助记忆的,每一条汇编语言指令都是由机器码对应的,比如:在win32中汇编指令push ESI ;将ESI寄存器压入堆栈。他的机器码就是56.这个是56是16进制数。
CPU只认识56这个机器码,它不认识PUSH ESI;这个字符串。但是我们人对56这个机器码又不方便记忆。所以有了汇编语言,同时又有了,将汇编语言转化成机器码的工具。
刚才大概介绍了下PC机的工作原理,我们接下来就可以解决楼主的问题了。
1、要知道这个硬件CPU支持的指令集。就是56对应做什么工作。一般这个指令集有几百条。硬件不同,指令集可能不同。
2、需要一些楼主喜欢的英文字母,用来当做指令。比如说yazhan E(大小写无关)
3、需要一个工具,将yazhan E变成56。这往往会有一个表指示yazhan E就是56(这个表需要自己构造)。
4、搞定了。用个文件,写入,yazhan E 再经过工具翻译,就变成56了,CPU就认识yazhan E这个指令就是将 ESI压入堆栈。
注:以上这个过程只是理论性的。实验性很小。不是说实验做不了,是太麻烦。
还有什么问题欢迎追问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这东西就很复杂了。开发一门语言不仅要有过硬的数学知识和经验,还要对硬件、操作系统底层非常了解,还要预见语言的未来的使用。总之涉及的知识太多,而开发语言不一定能赚钱.这东西非高手中的高手是做不出的。要是开发一门语言很容易的话,国内早就有国产的C 、JAVA了.目前,全世界有大约超过2000种编程语言,但是存活下来的少得可怜。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询