编译器

✍ dations ◷ 2025-11-12 01:19:55 #编译器软件,程序设计工具

编译器(compiler)是一种计算机程序,它会将某种编程语言写成的源代码(原始语言)转换成另一种编程语言(目标语言)。

它主要的目的是将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。编译器将原始程序(source program)作为输入,翻译产生使用目标语言(target language)的等价程序。源代码一般为高级语言(High-level language),如Pascal、C、C++、C# 、Java等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

一个现代编译器的主要工作流程如下:

源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(linker)→ 可执行文件(executables),最后打包好的文件就可以给电脑去判读运行了。

早期的计算机软件都是用汇编语言直接编写的,这种状况持续了数年。当人们发现为不同类型的中央处理器(CPU)编写可重用软件的开销要明显高于编写编译器时,人们发明了高级编程语言。由于早期的计算机的内存很少,当大家实现编译器时,遇到了许多技术难题。

大约在20世纪50年代末期,与机器无关的编程语言被首次提出。随后,人们开发了几种实验性质的编译器。第一个编译器是由美国女性计算机科学家葛丽丝·霍普(Grace Murray Hopper)于1952年为A-0 系统编写的。但是1957年由任职于IBM的美国计算机科学家约翰·巴科斯(John Warner Backus)领导的FORTRAN则是第一个被实现出具备完整功能的编译器。1960年,COBOL成为一种较早的能在多种架构下被编译的语言。

高级语言在许多领域流行起来。由于新的编程语言支持的功能越来越多,计算机的架构越来越复杂,这使得编译器也越来越复杂。

早期的编译器是用汇编语言编写的。首个能编译自己源程序的编译器是在1962年由麻省理工学院的Hart和Levin制作的。从20世纪70年代起,实现能编译自己源程序的编译器变得越来越可行,不过还是用Pascal和C语言来实现编译器更加流行。制作某种语言的第一个能编译器,要么需要用其它语言来编写,要么就像Hart和Levin制作Lisp编译器那样,用解释器来运行编译器。

编译器的构造与优化是计算机专业的大学课程,课程名称一般为“编译原理”或“编译器”。通常在课程中包含了如何实现一种教学用程序语言的编译器。一个著名的例子是20世纪70年代,瑞士计算机科学家尼克劳斯·维尔特(Niklaus Emil Wirth)用于讲解编译器的构造时使用的PL/0(英语:PL/0)编译器。尽管它很简单,PL/0编译器介绍了这个领域的几个有影响的概念:

编译器的一种分类方式是按照生成代码所运行的系统平台划分,这个平台称为目标平台。

有一些编译器输出的代码,将运行于与编译器所在相同类型的计算机和操作系统之上,这种编译器叫做本地编译器。输出可以运行于不同的平台之上的编译器,叫做交叉编译器。由于嵌入式系统通常没有软件开发环境,因此,为这类系统开发软件时,通常需要使用交叉编译器。

编译器所输出于虚拟机上运行之代码,编译器和编译器输出的运行平台有可能相同,也有可能不同。因此,对于这类编译器,不去区分它是本地编译器还是交叉编译器。

相关

  • 凝血酶1a2c, 1a3b, 1a3e, 1a46, 1a4w, 1a5g, 1a61, 1abi, 1abj, 1ad8, 1ae8, 1afe, 1aht, 1ai8, 1aix, 1awf, 1awh, 1ay6, 1b5g, 1b7x, 1ba8, 1bb0, 1bbr, 1bcu, 1bhx, 1bmm, 1bmn
  • 哺乳动物分类表哺乳动物分类表是根据动物分类学的方法列出的哺乳动物的分类。哺乳动物在分类学上称为哺乳纲。以下就是这一纲的分类列表。注:†表示已绝种
  • 世界鱼类数据库世界鱼类数据库(英语:FishBase)是一个为搜集鱼类数据而创立的全球物种数据库。是世界上最大也是访问最频繁的鱼类数据库。 很多学术文献都有引用该数据库的资料。世界鱼类数据
  • 雷丁雷丁(英语:Reading,意为“Reada 的人”,拼法跟“阅读”刚好相同,可是意思和读音都不同;读音:i/ˈrɛdɪŋ/ RED-ing),英国英格兰东南区域伯克郡的自治市镇,英格兰的单一管理区之一,人口
  • 扇形模式扇形模式(英语:sector model),也称为霍伊特模式(Hoyt model),是土地经济学家霍默·霍伊特(英语:Homer Hoyt)于1939年提出的城市土地利用模型。它是同心圆模式的修改。应用此模型的好处
  • 霍华德·弗洛里霍华德·华特·弗洛里,弗洛里男爵,OM,FRS(英语:Howard Walter Florey, Baron Florey,1898年9月24日-1968年2月21日),澳大利亚药理学家,由于对盘尼西林的研究而与恩斯特·伯利斯·柴恩
  • span class=nowrapYPOsub4/sub/span磷酸钇是一种钇的磷酸盐,化学式为YPO4。它在自然界中以磷钇矿和针磷钇铒矿的形式存在。磷酸钇可以由氯化钇和磷酸钠反应,或由硝酸钇和磷酸氢二铵于溶液中反应得到:氧化钇和磷酸
  • 神市国君主 · 首都 · 文学史 · 教育史电影史 · 韩医史陶瓷史 · 戏剧史韩国国宝 · 朝鲜国宝神市又名倍达国,神市国是朝鲜半岛传说中的古国家,由天帝桓因之子桓雄创立。
  • 鲸鱼肉鲸鱼肉指的是鲸鱼身上被人类与其他动物食用的部分,包含脂肪、皮以及内脏器官。鲸鱼肉在许多地方都有食用的历史,其中包含西欧与十三殖民地。 食用鲸鱼肉的习惯并不仅限于海岸
  • 沃尔纳特核桃市(英文:Walnut)中文又音译为沃尔纳特,是一座位于美国加利福尼亚州洛杉矶郡、富裕而宁静的城市,素有“小瑞士”之美誉,经常名列全美最宜居小城市及最适合抚养小孩的城市。核桃