自编译就是自举吗
㈠ 内核自举是什么
自举的意思是为你的系统建立一个工具链(C库和编译器),之后安装所有的核心系统软件包。要自举一个系统,先安装一个stage3。在你开始配置内核之前,修改一下bootstrap.sh以便它适合你的需要,接着就运行它。
代码 3.7: 自举系统
# cd /usr/portage/scripts
# vi bootstrap.sh
# ./bootstrap.sh
下一步,使用新建的工具链重新建立所有的核心系统软件包。因为stage3的taball已经提供了它们,所以我们需要重新建立它们。
代码 3.8: 重建所有的核心系统包
# emerge -e system
现在你可以继续配置内核。并且你将不能再使用预编译的GRP软件包了.
====
书上写的 应该是重新load
㈡ 什么是编程语言的自举
就是自己的编译器可以自行编译自己的编译器。
实现方法就是这个编译器的作者用这个语言的一些特性来编写编译器并在该编译器中支持这些自己使用到的特性。
首先,第一个编译器肯定是用别的语言写的(不论是C还是Go还是Lisp还是Python),后面的版本才能谈及自举。
至于先有鸡还是先有蛋,我可以举个这样的不太恰当的例子:比如我写了一个可以自举的C编译器叫作mycc,不论是编译器本身的执行效率还是生成的代码的质量都远远好于gcc(本故事纯属虚构),但我用的都是标准的C写的,那么我可以就直接用gcc编译mycc的源码,得到一份可以生成高质量代码但本身执行效率低下的mycc,然后当然如果我再用这个生成的mycc编译mycc的源码得到新的一份mycc,新的这份不光会产生和原来那份同等高质量的代码,而且还能拥有比先前版本更高的执行效率(因为前一份是gcc的编译产物,后一份是mycc的编译产物,而mycc生成的代码质量要远好于gcc的)。故事虽然是虚构的,但是道理差不多就是这么个道理。这也就是为什么如果从源码编译安装新版本的gcc的话,往往会“编译——安装”两到三遍的原因。
㈢ 计算机编程语言必须能够自举吗
不明白自举是什么意思, 是自己实现自己吗?
如果是这个那么绝大多数都可以.因为他们的根都在操作系统依赖标准的操作系统库.
不管是编译型的还是解释型的都毫无问题.
㈣ java中的自举类,是什么意思
java编译器编译java编译器。一开始c++编译第一代的java编译器。之后每一代的java编译器 编译后一代的java 编译器。1.0编译2.0;不需要其他c或c++.
㈤ 自己写编译器怎么写,我想为中国程序员做个编译C语言的编译器。
首先做这个东西的意义并不大,如果是想学习的话,看看这本书Modern Compiler by Andrew W. Appel
㈥ 汇编语言编译器是怎么编写的
编译器自举!搜索这个关键字
程序都是编译器编译的。这个是肯定的
至于第一款X语言编译器是不是直接1010101010自己写的那就不知道啦
一般开发编译器的话。有两条路选择
1.利用yacc(或者其变种)&lex(词法分析)-等工具自己生成语法模板
词法语法都可以使用这些工具自己生成
然后自己编写生成的中间码和生成的机器码就可以了
一般做编译原理类似试验都是如此的。许多编译器也的确是这样
2.自己写词法分析和语法分析。可以参考一些开源的编译器
lcc-这个是ANSI C99标准的编译器是开源的
或者nasm,watcom等编译器到www.sf.net上不少开源的编译器
总的来说。高级语言编译器比较难写
如果想快速写出一个的话
可以采用第一种做法。利用工具生成语法词法模板
先写一个简单的汇编编译器比较简单
开源的有nasm,jwasm(支持masm语法开源的编译器)
http://www.japheth.de/JWasm.html
fasm(这款编译器是自举的.就是自己可以编译自己),
http://flatassembler.net/
剩下的就是自己做好语言规则关键字map
引用高手的话。语言map做好了你的编译器也做好一半了
剩下的都是机械性的工作了。
生成x86或者arm指令。
优化工作这个很难解释.根据你所需要的做吧
毕竟可以做出一个无错,又XX的编译器已经很难得
你可以选择使用现有的编译器开发自己的编译器
然后等到你的编译器支持相当数量指令和成熟度的时候
使用自己的语法重新写一遍编译器.
这样你就可以用自己的编译器开发自己的编译器了(是不是很邪恶?)
另外举几个例子
Delphi的编译器是C++ Builder开发的。
而C++ Builder的IDE是Delphi开发的
C++ Builder的编译器是C++ Builder开发的-这个就是编译器自举了。。Delphi和C++ Builder共享一个后端化优化器。
Delphi 早期的版本的编译器是tasm直接编译的。可见Anders的汇编功力多强悍(Anders也就是后来VJ++,C#,.NET工程的核心架构师.最关键的灵魂级人物)
VC++的编译器是VC++开发的。很明显这都说明了编译器自举
自己开发自己。如果一个编译器可以做到自己编译自己。那基本上就可以实现任何功能了。
关于编译器开发的书籍可以看一下
龙书《编译原理(第二版)》
虎书《现代编译原理-C语言描述》
鲸书《高级编译器设计与实现》
建议从鲸书看起。然后是龙书
再来是虎书--虎书里面描述了许多现代编译器(正如其名)技术
例如面向对象啦,优化,垃圾回收等等.
鲸书看完基本上就可以实现一个简单的Tiny C编译器了
然后在龙书巩固,读一下语言规范,自己看一些开源的汇编编译器代码
自己就可以尝试做一个汇编语言编译器了.等到技术提高了
在尝试做一些高级语法识别,参考LCC代码做一下ANSI C99的
C语言编译器。再来就看你自己的兴趣和领悟度拉
如果想支持C++的话就得要对编译器做许多方便的研究
类似Java那种跨平台或者Ruby,Python等动态语言
虎书中也有描述。当然看自己功力了
㈦ 编译器的自举原理是什么
编译器的所有自举原理主要是和代码和优化有关,运行库是C++语言写的,产生的目标代码肯定是会与运行平台一致的,如果不一致,也没办法进行自举。
㈧ 什么是自举开发能力什么样的系统才具有自举开发能力
以下全是个人理解:
在当前开发环境的基础上开发更好的开发环境的能力被称为自举开发能力。
用C语言来开发C编译器的过程就是自举开发过程。这一过程可能是这样的:机器语言编写汇编编译器,用汇编编写一个简单的C编译器,然后用C编写一个更好的C编译器,同时也可以用C编译一个更好的汇编编译器,而且新的编译器还可以重新编译原来的C编译器……
个人认为具备了图灵完备性的系统都具有自举开发能力。但是受硬件局限性,自举能力可能受到限制,并且根据需求或许这一能力并不必要……
比如说我听说有个牛人用74系列门电路集成芯片、八段码液晶显示、开关搭建了一个单片机开发环境,然后用它开发一个用单片机实现的单片机开发环境(所有的程序都是用开关按进去的),后来他在准备给这个开发环境添加LCD支持的时候,他终于有了一台属于自己的计算机,这时候,他就不再需要将他的单片机开发环境继续自举下去了……因为他已经拥有了足够满足要求的计算机和相应软件……
㈨ C语言是用什么编写出来的
C语言通过语言开发出来的。
C语言是Dennis Ritchie 在1972年通过Thompson的B语言的基础之上开发出来的。C是作为从事实际编程工作的程序的一种工具而出现的,所以其主要目标是成为一种有用的语言。同时, C 也是为编程人员开发的语言,这使得它成为当今人们首先的编程语言之一。
C已经成为最重要和流行的编程语言之一。它之所以得到发展,是因为人们尝试使用它后喜欢它。过去10年中,许多人从C转而使用更强大的C++语言,但C有其自身的优势,仍然是一种重要的语言,而且它还是通往C++的必由之路。
(9)自编译就是自举吗扩展阅读
C语言特点
1、设计特性:C是一种融合了控制特性的现代语言,而我们已发现在计算机科学的理论和实践中,控制特性是很重要的。
2、高效性: C是一种高效的语言。 在设计上它充分利用了当前计算机在能力上的优点。C程序往往很紧凑且运行速度快。
3、可移植性:C是一种可移植语言。在一个系统上编写的C程序经过很少改动或不经修改就可以其他系统上运行。
㈩ 请问学x86汇编语言用什么编译器
编译器自举!搜索这个关键字
程序都是编译器编译的。这个是肯定的
至于第一款X语言编译器是不是直接1010101010自己写的那就不知道啦
一般开发编译器的话。有两条路选择
1.利用yacc(或者其变种)&lex(词法分析)-等工具自己生成语法模板
词法语法都可以使用这些工具自己生成
然后自己编写生成的中间码和生成的机器码就可以了
一般做编译原理类似试验都是如此的。许多编译器也的确是这样
2.自己写词法分析和语法分析。可以参考一些开源的编译器
lcc-这个是ANSI C99标准的编译器是开源的
或者nasm,watcom等编译器到上不少开源的编译器
总的来说。高级语言编译器比较难写
如果想快速写出一个的话
可以采用第一种做法。利用工具生成语法词法模板
先写一个简单的汇编编译器比较简单
开源的有nasm,jwasm(支持masm语法开源的编译器)
fasm(这款编译器是自举的.就是自己可以编译自己),
剩下的就是自己做好语言规则关键字map
引用高手的话。语言map做好了你的编译器也做好一半了
剩下的都是机械性的工作了。
生成x86或者arm指令。
优化工作这个很难解释.根据你所需要的做吧
毕竟可以做出一个无错,又XX的编译器已经很难得
你可以选择使用现有的编译器开发自己的编译器
然后等到你的编译器支持相当数量指令和成熟度的时候
使用自己的语法重新写一遍编译器.
这样你就可以用自己的编译器开发自己的编译器了(是不是很邪恶?)
另外举几个例子
Delphi的编译器是C++ Builder开发的。
而C++ Builder的IDE是Delphi开发的
C++ Builder的编译器是C++ Builder开发的-这个就是编译器自举了。。Delphi和C++ Builder共享一个后端化优化器。
Delphi 早期的版本的编译器是tasm直接编译的。可见Anders的汇编功力多强悍(Anders也就是后来VJ++,C#,.NET工程的核心架构师.最关键的灵魂级人物)
VC++的编译器是VC++开发的。很明显这都说明了编译器自举
自己开发自己。如果一个编译器可以做到自己编译自己。那基本上就可以实现任何功能了。
关于编译器开发的书籍可以看一下
龙书《编译原理(第二版)》
虎书《现代编译原理-C语言描述》
鲸书《高级编译器设计与实现》
建议从鲸书看起。然后是龙书
再来是虎书--虎书里面描述了许多现代编译器(正如其名)技术
例如面向对象啦,优化,垃圾回收等等.
鲸书看完基本上就可以实现一个简单的Tiny C编译器了
然后在龙书巩固,读一下语言规范,自己看一些开源的汇编编译器代码
自己就可以尝试做一个汇编语言编译器了.等到技术提高了
在尝试做一些高级语法识别,参考LCC代码做一下ANSI C99的
C语言编译器。再来就看你自己的兴趣和领悟度拉
如果想支持C++的话就得要对编译器做许多方便的研究
类似Java那种跨平台或者Ruby,Python等动态语言
虎书中也有描述。当然看自己功力了