编译器一般由哪种语言开发?参考 Dennis M. Ritchie 写的 The Development of the C Language:Chistory,C 语言诞生的基本过程就是 Ken Thomson 不满意 BCPL,于是设计了 B 语言,并且用 BCPL 为 B 语言写了一个编译器,然后从这个编译器开始自举写新的 B 语言编译器 。贝尔实验室的众人在 PDP-7 上用 B 语言写了各种各样的东西后又不满意 B 语言了 , 于是 1971 年 DMR 开始在新买的 PDP-11 上用 B 给 B 写扩展 , 称之为 NB (new B , 此处省略吐槽若干),扩展着扩展着离 B 的画风越来越远了,就取了一个新名字变成了一门新语言—— C 语言 。1973 年夏天他们用手头的编译器和语言给 PDP-11 重写了一个 Unix Kernel 。C 语言大约就是这个时期成型的 。
所以,可以说第一个 C 语言的编译器是用 B 语言,或者说是扩展过的 B 语言(NB)写的 。因为是一边改进语言一边用改进了的编译器这样滚雪球写出来的 , 也可以看成是 C 语言写的?毕竟 很难确定什么时候 C 自己变成了一门新语言……
常见的C语言编译器是什么?目前最流行的C语言编译器有以下几种:
1、GNU Compiler Collection 或称 GCC
GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器 。它是以GPL许可证所发行的自由软件 , 也是 GNU计划的关键部分 。
GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows 。GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布 。
2、Microsoft C 或称 MS C
Microsoft C 是c语言的一种IDE(集成开发环境) , 常见的还有Microsoft Visual C,Borland C , Watcom C,Borland C,Borland CBuilder,Borland C3.1 for DOS,Watcom C11.0 for DOS,GNU DJGPP C,Lccwin32 C Compiler 3.1,High C,Turbo C等等......
3、Borland Turbo C 或称 Turbo C
Turbo C是美国Borland公司的产品 , Borland公司是一家专门从事软件开发、研制的大公司 。该公司相继推出了一套 Turbo系列软件, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 这些软件很受用户欢迎 。
扩展资料:
C编译的整个过程很复杂,大致可以分为以下四个阶段:
1、预处理阶段在该阶段主要完成对源代码的预处理工作 , 主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件 。
2、编译、优化阶段编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言 。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数 。
3、汇编阶段将汇编语言翻译成机器指令 。
4、链接阶段链接阶段的主要工作是将有关的目标文件连接起来,即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来 , 使得所有的目标文件成为一个能够被操作系统装入执行的统一整体 。
参考资料来源:百度百科-gcc (GNU编译器套件)
参考资料来源:百度百科-Microsoft C
参考资料来源:百度百科-Turbo C
为什么不用Go语言写单片机程序单片机不像一些应用软件,和硬件结合十分紧密,必须要求“高效”,所以汇编语言是最好选择,其次就是C语言了 。其他语言编译效率都太低,满足不了要求 。
Go 是怎么使用 Go 来编译自身的Go是一个图灵完备的语言
任何图灵完备的语言理论上都可以用来编译自身 。比如c/c, java, vb, php等等都可以 。
至于怎么编译自身的:
用其它语言比如c实现一个[Go语言编译器-1]
用Go语言写一个[Go语言编译器-2]
用这个c实现的[Go语言编译器-1]编译第2步里面说的Go语言写的[Go语言编译器-2]
用第3步得到的[Go语言编译器-2],再编译一次第2步里面说的[Go语言编译器-2]的源码 。
OK,现在有一个Go语言实现的编译器了,最开始那个c写的编译器没用了,可以扔掉不要了 。以后就不停的优化使用这个Go语言实现的自身的编译器就行了 。
为什么c语言的编译器可以用c语言来写?所谓C语言编译器c语言写go语言编译器 , 就是把编程得到c语言写go语言编译器的文件c语言写go语言编译器,比如.c,.h的文件,进行读取,并对内容进行分析,按照C语言的规则,将其转换成系统可以执行的二进制文件 。
其本质在于对文件的读入,分析 , 及处理 。这些操作,C语言都是可以实现的 。
所以用C语言来做C语言的编译器是完全可行的 。
但是 , 历史上的第一个C语言编译器,肯定不是C语言写的,因为在没有编译器时 , 无法把C语言转换成可执行文件 。
只要有c语言写go语言编译器了第一版其它语言的编译器,就可以用C语言写编译器c语言写go语言编译器了 。
事实上,目前大多数的C语言编译器,都是用C语言写的 。
【c语言写go语言编译器 go语言编程】c语言写go语言编译器的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于go语言编程、c语言写go语言编译器的信息别忘了在本站进行查找喔 。
推荐阅读
- 微信招工直播怎么操作的,微信招工直播怎么操作的啊
- sqlserver深入详解pdf,sqlserver进阶教程
- python爬虫频次,python爬虫过程
- word中如何消除格式,如何消除word的格式
- linux命令大全及详解 linux命令大全chm版
- go语言接力,go语言的接口到底有什么用
- 和粉丝一起玩团战竞技游戏,与粉丝互动游戏
- 电脑360怎么修复硬盘,360硬盘文件恢复
- go语言make,go语言main函数参数