- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 一个赋闲的程序员+一段意外的假期+一台被淘汰的设备,Unix就这样诞生了。 那个赋闲的程序员,叫做Ken Thompson。照片上看上去很成熟,其实年龄不大,发明Unix的时候只有26岁。 1969年,他参与的研究项目Multics被贝尔实验室取消了,他顿时就无事可干了。 正好那年夏天,他的老婆带着孩子回娘家了,只留下他一个人在新泽西。反正空闲时间多得很,他就用了一个月的时间,在家里写了一个小型版的Multics。 但是,贝尔实验室没有机器可以让他测试,因为那时计算机太贵了,不可能用于一个年轻程序员的业余项目。Ken Thompson没有办法,只好在一台型号为PDP-7的小型机上测试自己的软件。这台小型机因为性能太差,所以没人去用,就被闲置在一边了。 虽然PDP-7叫小型机,其实也是庞然大物,需要一间房间才能放得下。 PDP-7在1965年上市的时候,价格是72000美元,已经属于超级便宜的计算机了。第一版的Unix就是在这种机器上诞生的,下面就是一张Ken Thompson和他的同事当时的工作照。 * * * 1.2 编译器结构 符号表管理 实例 语句 position = initial + rate * 60 词法分析器发现源程序的标识符时,把该标识符填入符号表。但是,词法分析期间不能确定一个标识符的属性。 例如: 其余的阶段把标识符的信息填入符号表,然后以不同的方式使用这些信息 * 1.2 编译器结构 出错管理 每个阶段都可能发现源程序的错误。发现错误后,该阶段必须处理此错误,使得编译可以继续进行,以便进一步发现源程序的其他错误。 词法分析:当前被扫描的字符串不能形成语言的词法记号。 语法分析:记号流违反语言的语法规则。 语义分析:编译器试图找出语法正确但对所含的操作来说是无意义的结构,如相加的两个标识符,其一是数组名,另一个是过程名。 * 1.3 编译系统 除了编译器外,还需要一些其他工具的帮助,才能得到可执行的目标程序,这些工具包括预处理器、汇编器和连接器等 C语言的编译系统 Java语言的编译系统 * 1.3 编译系统 C语言的编译系统 一个语言处理系统:图1.5 设有两个文件 main.c swap.c gcc–v–o swap main.c swap.c -v 可以输出该编译系统各步骤执行的命令和执行结果 -o 指示生成的可执行文件的名字 * 1.3 编译系统 C语言的编译系统 预处理器 实现文件包含 #include stdio.h 实现宏展开 #define pi 3.1415926 条件编译 #if 、#ifdef * 1.3 编译系统 C语言的编译系统 汇编器:对输入进行两遍扫描 第一遍,汇编器扫描输入,将表示存储单元的所有标识符都存入符号表,并分配地址。 第二遍,汇编器再次扫描输入,把每个操作码翻译成机器语言中代表那个操作的位串,并把代表存储单元的每个标识符翻译成符号表中为这个标识符分配的地址。 gcc –S main.c as –o main.o main.s * 1.3 编译系统 C语言的编译系统 连接器:收集、组织程序所需的不同代码和数据 静态连接器:将多个可重定位目标文件组成一个可执行目标文件(也可以组成一个可重定位目标文件) 动态连接器:支持在内存中的可执行程序在执行时与共享目标文件进行动态的连接。 * 1.3 编译系统 Java语言的编译系统 一般的高级语言程序如果要在不同的平台上运行,至少需要编译成不同的目标代码。 Java虚拟机技术是实现Java平台无关性特点的关键。 Java虚拟机语言(简称JVML) JVML程序只需要与虚拟机交互,不需要关心底层的硬件和操作系统。 * 1.3 编译系统 Java语言的编译系统 * 1.4 程序设计语言发展历程(1.3) 程序设计语言发展历程 机器语言(第一代): 20世纪40年代 汇编语言(第二代) :20世纪50年代早期 高级语言 :20世纪50年代晚期+ 通用(第三代): Fortran、Cobol、C、C++、C#、Java 专用(第四代):SQL、Postscript 逻辑(第五代):Prolog、LISP * 1.4 程序设计语言发展历程 C语言的产生 The Development of the C Language:C history – Written by Dennis Ritchie BCPL ? B语言 ? New B语言 ? C语言 * Ken Thompson (left) with Dennis Ritchie DEC PDP-7, as used for initial work on C and Unix 1.4 程序设计语言发展历程 第一届(1966年)图灵奖得主:A
您可能关注的文档
最近下载
- 杭州地铁五号线车辆段TOD综合体结构设计.pdf VIP
- SHS 01009—2019 管壳式换热器维护检修规程.docx VIP
- CO_2气体保护焊药芯焊丝效能对比试验.pdf VIP
- 《情感共鸣:制作激发心灵的课件》.ppt VIP
- 辽宁省辽南多校2024-2025学年高一上学期期中考试英语试卷(含答案).docx VIP
- 围棋入门教学课件成人.ppt VIP
- 杭州工业遗存保护的生态化策略探析.pdf VIP
- DB13_T 6161-2025 乡村振兴村域特性与产业发展适配性评价规范.pdf VIP
- 03D103 10kv以下架空线路安装.docx VIP
- 福建省福州福清市2024-2025学年上学期九年级期中考物理试卷(无答案).docx VIP
原创力文档


文档评论(0)