編譯器

Multi tool use
程序执行 |
基础概念 |
|
代码类型 |
|
编译策略 |
即時編譯(JIT)
提前编译(AOT)
- 源代码至源代码编译器
- 动态重编译
|
知名运行环境 |
Android Runtime(ART)
通用語言運行庫(CLR)
- crt0
Java虚拟机(JVM)
- Node.js
- Zend引擎
|
著名编译器及工具链 |
|
|
编译器(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编译器那样,用解释器来运行编译器。
教学用的编译器
编译器的构造与优化是计算机专业的大学课程,[1]课程名称一般为「编译原理」或「編譯器」。通常在课程中包含了如何实现一种教学用程序语言的编译器。一个著名的例子是20世纪70年代,瑞士計算機科學家尼克劳斯·维尔特(Niklaus Emil Wirth)用于讲解编译器的构造时使用的PL/0编译器。尽管它很简单,PL/0编译器介绍了这个领域的几个有影响的概念:
- 逐步求精的程序开发(也是 1971年 Wirth 的论文的标题)[2]
- 使用递归下降解析器
- 使用EBNF指定语言的语法。
- 代码生成器产生便携P-code
- 在自举问题的正式描述中使用T-diagram。
编译器输出
编译器的一种分类方式是按照生成代码所运行的系统平台划分,这个平台称为目标平台。
有一些编译器输出的代码,将运行于与编译器所在相同类型的计算机和操作系统之上,这种编译器叫做本地编译器。输出可以运行于不同的平台之上的编译器,叫做交叉编译器。由于嵌入式系统通常没有软件开发环境,因此,为这类系统开发软件时,通常需要使用交叉编译器。
编译器所输出于虚拟机上运行之代码,编译器和编译器输出的运行平台有可能相同,也有可能不同。因此,对于这类编译器,不去区分它是本地编译器还是交叉编译器。
参考文献
^ Chakraborty, P., Saxena, P. C., Katti, C. P., Pahwa, G., Taneja, S. A new practicum in compiler construction. Computer Applications in Engineering Education, In Press. http://onlinelibrary.wiley.com/doi/10.1002/cae.20566/pdf
^ The ACM Digital Library. (原始内容存档于2007-07-17).
参见
電腦科學的主要领域
|
|
注:该模板大致遵循ACM-2012计算分类系统。 |
|
电脑硬件
|
- 印刷电路板
- 外部设备
- 集成电路
- 超大规模集成电路
- 绿色计算
- 電子設計自動化
|
|
系统架构组织 |
|
|
网络 |
|
|
软件组织 |
|
|
软件符号和工具
|
- 编程范型
- 编程语言
- 編譯器
- 领域特定语言
- 軟體框架
- 集成开发环境
- 软件配置管理
- 函式庫
|
|
软件开发 |
- 软件开发过程
- 需求分析
- 软件设计
- 软件部署
- 軟體維護
- 开源模式
|
|
计算理论 |
- 自动机
- 可计算性理论
- 计算复杂性理论
- 量子计算
- 数值计算方法
- 计算机逻辑
- 形式语义学
|
|
算法 |
|
|
计算数学 |
- 离散数学
- 概率
- 统计学
- 数学软件
- 数理逻辑
- 集合论
- 数论
- 图论
- 类型论
- 范畴论
- 信息论
- 数值分析
- 数学分析
|
|
信息系统 |
- 数据库管理系统
- 電腦數據
- 企业信息系统
- 社会性软件
- 地理信息系统
- 决策支持系统
- 过程控制
- 数据挖掘
- 數位圖書館
- 系统平台
- 數位行銷
- 万维网
- 信息檢索
|
|
安全 |
- 密码学
- 形式化方法
- 入侵检测系统
- 网络安全
- 信息安全
|
|
人机交互 |
- 计算机辅助功能
- 用户界面
- 可穿戴计算机
- 普适计算
- 虚拟现实
- 聊天機器人
|
|
并发性 |
|
|
人工智能 |
- 自动推理
- 计算语言学
- 计算机视觉
- 进化计算
- 专家系统
- 自然语言处理
- 机器人学
|
|
机器学习 |
|
|
计算机图形学 |
- 计算机动画
- 可视化
- 渲染
- 修飾照片
- 圖形處理器
- 混合现实
- 虚拟现实
- 图像处理
- 图像压缩
- 实体造型
|
|
应用计算 |
- 电子商务
- 企业级软件
- 计算数学
- 计算物理学
- 计算化学
- 计算生物学
- 計算社會科學
- 医学信息学
- 数字艺术
- 電子出版
- 網絡戰
- 电子游戏
- 文字处理器
- 運籌學
- 教育技术学
- 生物信息学
- 认知科学
- 文件管理系统
|
|
|
|
规范控制 |
- BNE: XX532454
- BNF: cb120631538 (data)
- GND: 4148248-7
- LCCN: sh86007588
- NDL: 01191219
|
|
PW,mYCIT wbW iIOZ,EENjLaOAN5gOfFIlVNK0,6RI bhuW5cCnn,3,SRMGEIEWqf3CVF,PTuiWShYOtnJlEmJy7 8OGTreornq
Popular posts from this blog
This article is about the letter of the alphabet. For other uses, see Y (disambiguation). See also: Wye (disambiguation) Y Y y (See below) Usage Writing system Latin script Type Alphabetic and Logographic Language of origin Latin language Phonetic usage [ y ] [ ɨ ] [ j ] [ iː ] [ ɪ ] [ ɘ ] [ ə ] [ ɯ ] [ ɛː ] [ j ] [ ɥ ] [ ɣ̟ ] / w aɪ / / aɪ / Unicode value U+0059, U+0079 Alphabetical position 25 History Development Υ υ 𐌖 Y y Time period 54 to present Descendants • U • V • W • Ỿ • ¥ • Ꮙ • Ꮍ • Ꭹ Sisters F Ѵ У Ў Ұ Ү ו و ܘ וּ וֹ ࠅ 𐎆 𐡅 ወ વ ૂ ુ उ Variations (See below) Other Other letters commonly used with y(x), ly, ny This article contains IPA phonetic symbols. Without proper rendering support, you may see question marks, boxes, or other symbols instead of Unicode characters. For an introductory guide on IPA symbols, see Help:IPA. ISO basic Latin alphabet Aa Bb Cc D...
Mount Tamalpais Mount Tamalpais, viewed from the south Highest point Elevation 2,571 ft (784 m) NAVD 88 [1] Prominence 2,456 ft (749 m) [1] Listing California county high points 55th Coordinates 37°55′45″N 122°34′40″W / 37.929088°N 122.577829°W / 37.929088; -122.577829 Coordinates: 37°55′45″N 122°34′40″W / 37.929088°N 122.577829°W / 37.929088; -122.577829 [1] Geography Mount Tamalpais Marin County, California, U.S. Show map of California Mount Tamalpais Mount Tamalpais (the US) Show map of the US Parent range California Coast Ranges Topo map USGS San Rafael Geology Mountain type Sedimentary Climbing First ascent 1830s by Jacob P. Leese (first recorded ascent) [2] Easiest route Railroad Grade fire trail Mount Tamalpais ( / t æ m əl ˈ p aɪ . ɪ s / ; TAM -əl- PY -iss ; Coast Miwok: /t̪ɑmɑlˈpɑis̺/ , known locally as Mount Tam ) is a peak in Marin County, California, United State...
FMW Women's Championship Details Promotion Frontier Martial-Arts Wrestling [1] Date established November 5, 1990 [1] Date retired September 28, 1997 Other name(s) WWA World Women's Championship FMW Independent Women's Championship Statistics First champion(s) Combat Toyoda [1] Most reigns Megumi Kudo (6 reigns) [1] Longest reign Megumi Kudo (426 days) [1] Shortest reign Shark Tsuchiya (<1 day) [1] The FMW Women's Championship (or the FMW Independent Women's & WWA Women's Championship ) was two Japanese women's professional wrestling championships (WWA World Women's Championship and FMW Independent World Women's Championship) contested in the promotion Frontier Martial-Arts Wrestling (FMW). During the heyday of FMW, the female wrestlers wrestled in the same types of bloody death matches as the FMW men, and were feared by other Japanese female wrestlers for their toughness and intensity. ...