編譯器

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
|
|
JhcLJKoEiBT9mRAef,VrPfEQC7KLKTZEcfKSSP2uzrdbD2RT ptP08GZIYVfqUaRuHP7LQR Y m,kBB8uJDG0
Popular posts from this blog
body.skin-minerva .mw-parser-output table.infobox caption{text-align:center} GameSpot 戰地風雲:惡名昭彰2在Gamespot的評論 网站类型 新聞 持有者 CBS 创始人 Pete Deemer Vince Broady Jon Epstein 网站 http://www.gamespot.com/ 注册 Optional (free and paid) 推出时间 1996年5月1日 [1] GameSpot (中国大陆:游戏基地),於1996年5月由Pete Deemer和Vince Broady創立,是一個提供新聞、評論、預告片、下載及其他的相關資訊的電子遊戲網站。GameSpot被一間後來被CNET收購的企業ZDNet所收購。根據Alexa,GameSpot.com是200個網路擁擠最嚴重的網站之一。 除了由GameSpot員工創作的內容,網站還允許用戶寫評論、網誌、之後在網路論壇分享。一些在CNET旗下的GameFAQs分享。 2004年, GameSpot被Spike TV的觀眾選上「電子遊戲賞節目」贏得「最傑出遊戲網站。 [2] 其他的遊戲網站還有IGN、1UP.com、GameSpy是它最大的競爭對手。2008年,根據Compete.com的統計,「gamespot.com」吸引了最少6000萬人的點擊率。 [3] GameSpot的主頁鏈結了到最近新聞、評論、預告、和一些有關遊戲機的入口:Wii、任天堂DS、電腦遊戲、Xbox 360、PSP、PlayStation 2、PlayStation 3。它還有一列「最受歡迎遊戲名單」,還有給用戶快速獲得遊戲資訊的搜尋器。GameSpot 還包括一些小範圍的遊戲機:任天堂64、GameCube、Game Boy Color、Game Boy Advance、Xbox、PlayStation、SEGA Saturn、Dreamcast、Neo Geo Pocket Color、N-Gage、手機遊戲。 目录 1 歷史 1.1 國際歷史 1.2 著名的員工 2 評論和分...
body.skin-minerva .mw-parser-output table.infobox caption{text-align:center} 日野市 日野市 日文轉寫 • 日文 日野市 • 平假名 ひのし • 罗马字 Hino-shi 金剛寺(關東三十六不動尊靈場第9號)的不動堂 市旗 徽章 日野市在東京都的位置 日野市 日野市在日本的位置 坐标: 35°40′17″N 139°23′42″E / 35.6714°N 139.395°E / 35.6714; 139.395 国家 日本 地方 關東地方 都道府縣 東京都 接鄰行政區 府中市、國立市、立川市、昭島市、八王子市、多摩市 政府 • 市長 大坪冬彦 面积 • 总计 27.53 平方公里(10.63 平方英里) 人口 (2014年12月1日) • 總計 183,323 • 密度 6,660/平方公里(17,200/平方英里) 象徵 • 市樹 樫 • 市花 菊花 • 市鳥 普通翠鳥 时区 日本標準時間 (UTC+9) 地方公共團體編號 13212-8 邮政编码 〒 191-8686 市役所地址 日野市神明一丁目12番1號 電話號碼 +81-42-585-1111 法人編號 1000020132128 網站 http://www.city.hino.lg.jp/ 人口:日野市官方網頁 日野市 (日语: 日野市 / ひのし Hino shi * / ? )為一位于東京都(不含島嶼部分)中央地帶的城市。從東京站乘坐中央線特別快速列車45分鐘即可到該市。面積27.53km²。1963年(昭和38年)11月3日,該市開始實行市制,為全日本第559個市。汽車企業日野自動車的總部位於這裡。 往東京都特別區部的通勤率為20.9%,往八王子市的通勤率為12.0%(平成22年國勢調査)。 目录 1 概要 ...
body.skin-minerva .mw-parser-output table.infobox caption{text-align:center} 图-95 Ту–95 北约代号:熊(Bear) 一架在安格斯空军基地的图-95MS 概觀 類型 战略轰炸机 代號 北约代号: Bear (熊) 乘員 7名 駕駛員2名,機尾炮手1名,其他人員4名 首飛 1952年11月12日 服役 1956年 設計 圖波列夫設計局 產量 超过500架 現況 现役 主要用戶 蘇聯 俄羅斯 衍生機型 图-114、图-119、Tu-95 技术数据 長度 49.50米(162呎5吋) 翼展 51.10米(167呎8吋) 高度 12.12米(39呎9吋) 翼面積 310平方米(3,330平方呎) 空重 90,000公斤(198,000磅) 最大起飛重量 188,000公斤(414,500磅) 發動機 4具库兹涅佐夫NK-12MV型渦輪螺旋槳發動機 功率 4×11,000千瓦(14,800馬力) 性能數據 最大速度 925公里/時(500節,575哩/時) 爬升率 10米/秒(2,000呎/分) 最大升限 12,000米(39,000呎) 最大航程 15,000公里(8,100海浬,9,400哩) 翼負荷 606公斤/平方米(124磅/平方呎) 推重比 235 W/公斤(0.143馬力/磅) 武器装备 機炮 1具/2具AM-23型23公釐雷達控制機砲(機尾) 飛彈 空对地导弹: Kh-20、Kh-22 Kh-26、Kh-55 炸彈 60枚FAB-250炸彈,或 30枚FAB-500炸彈。 其他 载弹量(包括飞弹):最多15,000公斤(33,000磅) Tu-95熊式MR型機 图-95 (俄语: Ту–95 , 英语: Tu-95 ),北約代號: Bear ( 熊 ),是蘇聯圖波列夫設計局所研製,是全世界唯一服役的大型四渦輪螺旋槳發動機...