编译原理发展史
编程语言发展史

编程语言发展史编程语言发展史随着计算机技术的发展,编程语言也在不断地演化与发展。
编程语言是计算机程序设计的基础,它们为开发者提供了一种抽象和规范化的方式,使得开发者可以把复杂的问题分解成单个可执行的任务。
本文将从汇编语言到高级编程语言的发展历程中,探讨编程语言发展史的演变过程。
一、汇编语言时代20世纪50年代,计算机已经开始普及,但是当时的计算机只能使用机器语言或汇编语言进行编程。
汇编语言是一种低级编程语言,它通过使用助记符号来代替机器语言的指令码,使得开发者能够更容易地编写和阅读程序。
然而,汇编语言需要开发者具备计算机硬件和指令集的深入了解,缺乏对应用程序结构的抽象和高级功能,因此开发效率低,程序复杂且难以维护。
二、高级编程语言的出现随着计算机技术的不断进步,高级编程语言应运而生。
1954年,美国计算机科学家约翰·麦卡锡提出了一种基于逻辑学的新编程范型,称为Lisp语言,该语言首次提出了列表处理的技术,使得开发者可以很容易地处理数据结构。
Lisp语言的出现标志着高级编程语言的诞生,开发者不再需要具备底层硬件知识,只需具备抽象思维和逻辑思维。
在Lisp语言的基础上,1964年ALGOL 60语言横空出世,它是第一种正式的高级编程语言,被广泛应用于科学计算和工程应用。
ALGOL 60语言具有强大的抽象能力,支持算法、数据结构和程序设计等方面的高级概念。
此后,高级编程语言如雨后春笋般出现,包括FORTRAN、COBOL、BASIC等都在20世纪60年代问世。
这些编程语言在各自领域都发挥了重要作用,并为后来的编程语言打下了基础。
三、C语言的诞生1972年,丹尼斯·里奇和肯·汤普森在ATT实验室开发出了一种新型编程语言——C语言。
C语言借鉴了ALGOL 60和B语言的思想,同时也发挥了自己的优点,比如直接访问物理内存、按值传递参数和结构化编程等。
C语言适用于各种任务,从操作系统到应用程序,都可以用它编写。
编程语言发展史

编程语言发展史编程语言是人类和计算机交互的桥梁。
自计算机诞生以来,人们一直在探索更加高效、易用的编程语言。
本文将从早期语言的发展、面向过程、面向对象、函数式编程以及现代编程语言的概述等五个方面来介绍编程语言的发展史。
一、早期语言的发展早期的编程语言以机器语言和汇编语言为主。
这两种语言存在的问题是编写简单,但可读性、可维护性极差,添加新功能也需要重新编译整个程序。
随着计算机技术的发展,高级语言被开发出来,如FORTRAN、COBOL等。
这些语言能够快速地实现数学和商业计算,扩展性较好,但对程序设计和算法的抽象程度较低,难以应用于其他领域。
二、面向过程面向过程编程通过将程序分解为多个小的可复用的模块,当需要时通过调用这些模块来完成日常的工作。
面向过程编程在C语言等语言中被广泛使用,缩短代码长度并提高代码可读性。
三、面向对象编程面向对象编程通过将一些数据和做出操作的方法绑定在一起,实现了抽象和封装的功能。
面向对象语言如Java、C#等,已成为现代软件开发领域的主流。
面向对象的方法有助于代码重用和维护。
四、函数式编程函数式编程依赖于不可变变量和lambda表达式,可以使程序更加简单和可读。
函数式编程能够更好地处理大规模和分布式的数据。
近年来,比如Scala和Haskell这样的函数式编程语言出现了许多流行的大数据应用程序。
五、现代编程语言现代编程语言在前四种编程语言的基础上,增加了诸如类型安全、泛型、异步编程、内存安全等新的特性。
这些特性增加了程序员的生产力,使他们能够更加轻松地管理复杂的代码。
现代编程语言如Swift、Rust、Kotlin等,也取得了广泛的应用。
总结从早期的机器语言到现代编程语言,编程语言的发展经历了一个漫长的历程。
面向过程、面向对象、函数式编程和现代编程语言的发展趋势,试图使编程语言更加高效、简单、安全和可读。
在未来,预计会涌现出许多新的编程语言和新特性,帮助程序员更加轻松地用双手创造未来的IT世界。
编译原理王生原课件

编译原理的重要性
01
02
03
编译原理是计算机科学领域中非 常重要的一门课程,它不仅在理 论上有很高的价值,而且在实践 中也有广泛的应用。
通过学习编译原理,可以深入理 解计算机如何处理和执行程序, 提高对计算机系统的整体认识。
此外,编译原理在编译器设计、 软件工程、系统软件开发等方面 也有着广泛的应用,对于从事这 些领域的人员来说,掌握编译原 理是非常必要的。
类型安全检查
在语义分析阶段进行类型安全检查,确保类型 安全,预防运行时错误。
控制流分析
对程序的控制流进行分析,识别潜在的逻辑错误和安全漏洞。
运行时存储管理
内存管理
自动分配和释放内存,管理内存空间,避免内存 泄漏和野指针问题。
垃圾回收
自动识别并清除不再使用的内存,释放资源,减 轻程序员负担。
内存优化
编译原理王生原课件
目录
• 编译原理概述 • 编译过程 • 编译器设计 • 高级编译技术 • 编译原理的应用 • 编译原理实验
CHAPTE是计算机科学的一个分支, 主要研究如何将高级语言编写的源代 码转换成机器语言或低级语言,以供 计算机执行。
它涉及到程序设计语言的设计、实现 、分析和理解,以及计算机体系结构 、操作系统和网络等多个领域的知识 。
编译原理的发展历程
编译原理的发展历程可以追溯到20世纪50年代,当时计算机刚刚问世不久,人们开始研究如何将高级 语言编写的程序转换成机器语言程序。
随着计算机技术的不断发展,编译原理也在不断演变和完善,从最初的简单编译器到现在的复杂编译器 ,编译原理的应用范围也越来越广泛。
目前,编译原理已经成为计算机科学领域中一门非常重要的课程,许多高校都开设了相关的课程,培养 了大批优秀的编译器设计师和软件工程师。
编程语言发展史

1954 FortranFORTRAN(FORmula TRANslator的缩写)意为“公式翻译器”,是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。
FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。
1958 LISPLISP语言(全名LISt Processor,即链表处理语言)由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。
1959 CobolCOBOL(Common Business Oriented Language)是数据处理领域最为广泛的程序设计语言,是第一个广泛使用的高级编程语言。
主要应用于数值计算并不复杂,但数据处理信息量却很大的商业领域。
1962 SimulaSimula 67被认为是最早的面向对象程序设计语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承。
1964 BasicBASIC(Beginners’All-purpose Symbolic Instruction Code)的意思就是“初学者的全方位符号指令代码”,是一种设计给初学者使用的程序设计语言。
BASIC是一种解释语言,在完成编写后不须经过编译及连结即可执行,但如果要单独执行仍然需要编译成可执行文件。
1968 PascalPascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。
Pascal的取名是为了纪念十七世纪法国著名哲学家和数学家Blaise Pascal,它由瑞士Niklaus Wirth教授于六十年代末设计并创立。
1969 CC语言既具有高级语言的特点,又具有汇编语言的特点,由美国贝尔研究所的D.M.Ritchie 于1972年推出。
1978后,C语言已先后被移植到大、中、小及微型机上。
1975 SQLSQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
编程语言的发展史

编程语言的发展史编程语言的发展史可以追溯到1950年代。
在那个时候,计算机操作被视为一项艰难的任务,并且需要程序员使用低水平的机器语言(即二进制代码)来执行操作。
随着计算机技术的发展,更高级别的编程语言得以创造,为程序员提供了更高效和易于编码的编程方式。
以下是编程语言的主要发展历程:1. 机器语言:机器语言是计算机可识别的二进制代码,需要程序员以十六进制或二进制形式输入操作指令。
这种编程方式很繁琐,不直观且容易出错。
2. 汇编语言:汇编语言使用助记符来代替机器语言中的二进制指令。
这使得程序员可以更容易地编写程序,提高了代码的可读性和可维护性。
3. FORTRAN:FORTRAN(Formula Translation)是最早的高级编程语言之一,开发于1950年代早期。
它被广泛用于科学计算和工程领域,至今仍被广泛使用。
4. COBOL:COBOL(Common Business Oriented Language)是一种用于商业应用程序开发的编程语言。
它开发于1950年代末期和1960年代初期,现在仍在许多大型组织中使用。
5. LISP:LISP(List Processing)是一种编程语言,专门用于开发人工智能应用程序,因为它支持元编程和递归算法,并具有自我描述性。
6. C语言:C语言是一种高级编程语言,于1972年由丹尼斯·里奇(Dennis Ritchie)开发。
C语言的设计灵活、高效,以它为基础的许多编程语言在当前仍被广泛使用。
7. Java:Java是一种由Sun Microsystems(现在是Oracle)于1990年代开发的编程语言。
它通过网页交互和安卓应用等应用程序而变得流行。
Java也是一种跨平台的编程语言,可以在不同的操作系统上运行。
8. Python:Python是一种动态的、解释性高级编程语言,开发和维护由后来制定的Python软件基金会。
因为它的语法简单,易于学习,与众多领域(包括数据科学、人工智能、机器学习、网络开发等)的横向性,使Python在当前成为了一个备受欢迎的编程语言。
编译原理的发展与应用

编译原理的发展与应用1. 什么是编译原理编译原理是计算机科学的一个重要分支,它研究的是将高级编程语言转化为计算机能够执行的机器语言的过程。
编译原理主要涉及到编译器的设计和实现,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等方面的内容。
2. 编译原理的发展历程编译原理的发展可以追溯到上世纪50年代,随着计算机的不断发展和应用,编译原理也逐渐成为了计算机科学的重要研究方向。
•1952年,自动编程的发展促进了编译原理的研究,第一个FORTRAN 编译器被开发出来,实现了将高级语言转化为机器语言的功能。
•1956年,GLISP 编译器的开发成为了编译原理研究的一个重要里程碑,它是第一个将高级语言编译成机器代码的编译器。
3. 编译原理的应用领域随着计算机技术的快速发展,编译原理的应用范围也逐渐扩大。
以下是一些编译原理在不同领域的应用案例:3.1 编程语言开发编译原理在编程语言开发方面有着广泛的应用。
通过编译原理的相关技术,可以设计和实现高级编程语言,如C、C++、Java等。
编译原理可以帮助程序员将高级语言代码转化为计算机能够执行的机器语言代码,从而实现程序的执行。
3.2 编译器优化编译器优化是指对编译器生成的中间代码和目标代码进行优化,以提高程序的执行效率和性能。
通过应用编译原理中的代码优化技术,可以对程序进行各种优化,如去除冗余代码、减少循环的次数、提前计算等等。
这些优化措施可以显著提升程序的执行速度和性能。
3.3 操作系统编译原理在操作系统中也有着重要的应用。
操作系统的内核通常由高级语言编写,而编译原理可以将这些高级语言代码转化为汇编语言或机器语言代码,从而实现操作系统的功能。
编译原理还可以帮助操作系统设计和实现各种系统调用、进程管理和内存管理等功能模块。
3.4 嵌入式系统编译原理在嵌入式系统中也发挥着重要的作用。
嵌入式系统通常对资源的利用和性能要求较高,因此需要进行高效的代码编译和优化。
编译原理

1词法分析
词法分析是编译器前端设计的基础阶段,在这一阶段,编译器会根据设定的语法规则,对源程序进行标记,在标 记的过程中,每一处记号都代表着一类单词,在做记号的过程中,主要有标识符、关键字、特殊符号等类型,编译器 中包含词法分析器、输入源程序、输出识别记号符,利用这些功能可以将字号转化为熟悉的单词。
谢谢观看
2语法分析
语法分析是编译过程的第二个阶段。这阶段的任务是在词法分析的基础上将识别出的单词符号序列组合成各 类语法短语,如“语句”, “表达式”等.语法分析程序的主要步骤是判断源程序语句是否符合定义的语法规则, 在语法结构上是否正确。而一个语法规则又称为文法,乔姆斯基将文法根据施加不同的限制分为0型、1型、2型、 3型文法, 0型文法又称短语文法, 1型称为上下文有关文法, 2型称为上下文无关文法, 3型文法称为正规文法,限 制条件依次递增。
计算机类专业本科生学习本专业的第一门语言课程是C语言。C语言由于其类型不安全性,容易出现一些难以 捉摸的错误,使得学生难以定位和解决问题。如果能让学生根据编译器提供的提示信息,精确定位程序中的错误类 型和位置,把编译原理中所学用于实际C语言编程需求,这既完成了课程的教学内容,也提升了学生的软件编程和系 统分析的能力。
发展
在早期冯诺依曼计算机时期 (20世纪40年代)程序都是以机器语言编写,机器语言就是实际存储的01代码,编 写程序是十分枯燥乏味的。后来汇编语言代替机器语言一符号形式该处操作指令和编码。但汇编语言仍有许多缺 点,阅读理解起来很难,而且必须依赖于特定的机器,如果想使编写好的程序在另一台计算机上运行必须重写。在 20世纪50年代IBM的John Backus带领一个研究小组对FORTRAN高级语言及其编译器进行开发。编译程序的自动生 成工具初现端倪,现在很多自动生成工具已经广泛使用例如语法分析工具LEX,语言分析程序YACC等。在20世纪60 年代人们不断的用自编译技术构造编译程序,即用被编译的语言本身来实现该语言的编译程序,但其基本原理和结 构大体相同。经过不断发展现代编译技术已经较为成熟,多种高级语言发展迅速都离不开编译技术的进步。
编程语言历史发展史

编程语言历史发展史编程语言的历史早于真正意义的计算机的出现。
19世纪就有可编程的织布机和钢琴弹奏装置出现,它们都是领域特定语言(DSL)的样例。
编程语言发展的编年史我们一个统计出来256种编程语言,当然,这么多的语言中只有一些是常用的或实用的。
1951 – Regional Assembly Language1952 – Autocode1954 – IPL (LISP语言的祖先)1955 – FLOW-MATIC (COBOL语言的祖先)1957 –FORTRAN (第一个编译型语言)1957 – COMTRAN (COBOL语言的祖先)1958 – LISP1958 – ALGOL 581959 – FACT (COBOL语言的祖先)1959 – COBOL1959 – RPG1962 – APL1962 – Simula1962 – SNOBOL1963 – CPL (C语言的祖先)1964 – BASIC1964 – PL/I1966 – JOSS1967 – BCPL (C语言的祖先)1968 – Logo1969 – B (C语言的祖先)1970 – Pascal1970 – Forth1972 – C1972 – Smalltalk1972 – Prolog1973 – ML1975 – Scheme1978 – SQL1980 –C++ (既有类的C语言,更名于1983年7月)1983 – Ada1984 – Common Lisp1984 – MATLAB1985 – Eiffel1986 – Objective-C1986 – Erlang1987 – Perl1988 – Tcl1988 – Mathematica1989 – FL1990 – Haskell1991 – Python1991 – Visual Basic1993 – Ruby1993 – Lua1994 – CLOS (ANSI Common Lisp的一部分)1995 – Java1995 – Delphi (Object Pascal)1995 – Java1995 – PHP1996 – WebDNA1997 – Rebol1999 – D2000 – Action2001 – C#2001 – Visual Basic .NET2002 – F#2003 – Groovy2003 – Scala2007 – Clojure2009 – Go2011 – Dart从1951年2014年,人类一共发明了256种编程语言,每一种语言的出现都带有某些新特征。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理历史与发展姓名:费张烨学号:09923206 指导老师:朱文华基于形式语言理论中的有关概念来讨论编译实现问题。
即编译原理=形式语言理论+编译技术编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。
内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。
编译原理是计算机专业设置的一门重要的专业课程。
虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。
编译器是将一种语言翻译为另一种语言的计算机程序。
编译器将源程序(source language)编写的程序作为输入,而产生用目标语言(target language )编写的等价程序。
通常地,源程序为高级语言(high-level language ),如C或C + + ,而目标语言则是目标机器的目标代码(object code,有时也称作机器代码(machine code )),也就是写在计算机机器指令中的用于运行的代码。
这一过程可以表示为:源程序→编译器→目标程序编译技术的历史在20世纪40年代,由于冯·诺伊曼在存储-程序计算机方面的先锋作用,编写一串代码或程序已成必要,这样计算机就可以执行所需的计算。
开始时,这些程序都是用机器语言(machine language )编写的。
机器语言就是表示机器实际操作的数字代码,例如: C7 06 0000 0002 表示在IBM PC 上使用的Intel 8x86处理器将数字2移至地址0 0 0 0 (16进制)的指令。
但编写这样的代码是十分费时和乏味的,这种代码形式很快就被汇编语言(assembly language )代替了。
在汇编语言中,都是以符号形式给出指令和存储地址的。
例如,汇编语言指令 MOV X,2 就与前面的机器指令等价(假设符号存储地址X是0 0 0 0 )。
汇编程序(assembler )将汇编语言的符号代码和存储地址翻译成与机器语言相对应的数字代码。
汇编语言大大提高了编程的速度和准确度,人们至今仍在使用着它,在编码需要极快的速度和极高的简洁程度时尤为如此。
但是,汇编语言也有许多缺点:编写起来也不容易,阅读和理解很难;而且汇编语言的编写严格依赖于特定的机器,所以为一台计算机编写的代码在应用于另一台计算机时必须完全重写。
发展编程技术的下一个重要步骤就是以一个更类似于数学定义或自然语言的简洁形式来编写程序的操作,它应与任何机器都无关,而且也可由一个程序翻译为可执行的代码。
例如,前面的汇编语言代码可以写成一个简洁的与机器无关的形式 x = 2。
上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。
但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。
与此同时,Noam Chomsky开始了他对自然语言结构的研究。
他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。
Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。
正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。
2型文法(或上下文无关文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。
分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。
现在它已是编译原理中的一个标准部分。
有限状态自动机(Finite Automaton)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。
对它们的研究与Chomsky的研究几乎同时开始,并且引出了表示程序设计语言的单词的符号方式。
人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。
人们通常将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。
当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构造。
这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。
这些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年为Unix系统编写的。
类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk 为Unix系统开发)是这其中的佼佼者。
在70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。
这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。
编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中的信息;这又与更为复杂的程序设计语言的发展结合在一起。
其中典型的有用于函数语言编译的Hindley-Milner类型检查的统一算法。
其次,编译器已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。
这样的IDE标准并没有多少,但是对标准的窗口环境进行开发已成为方向。
另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节。
在九十年代,作为GNU项目或其它开放源代码项目的一部分,许多免费编译器和编译器开发工具被开发出来。
这些工具可用来编译所有的计算机程序语言。
它们中的一些项目被认为是高质量的,而且对现代编译理论感性趣的人可以很容易的得到它们的免费源代码。
大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。
Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。
编译原理的近期发展随着大规模集成电路、网络通讯和其它数字信息技术的迅速发展,目前嵌入式系统己经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术等各方面,在人们日常生活中的方方面面到处是嵌入式系统设备的身影,如手机、PDA、智能家电以及汽车电子等。
随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术和人们的生活结合越来越紧密,人们日常的工作、学习和生活方式终将不可避免地逐步改变,嵌入式产品正在逐步形成时尚,在当今的信息社会中扮演越来越重要的角色。
嵌入式系统一般指的是非PC系统,它包括完全植入嵌入式硬件内部的为特定应用设计的专用计算机系统,以及相应的硬件。
嵌入式系统以应用为中心的,它的软硬件可以根据需求进行裁减,以此来适应目标系统对外形尺寸、功能、可靠性、成本、功耗、外部接口等方面的严格要求。
简单地说,嵌入式系统集操作系统、应用软件与硬件于一体,具有软件代码小、高度自动化、响应速度快等特点,因此特别适合要求实时和多任务的应用。
由于嵌入式系统资源有限,一般无法提供编译、汇编、链接等工具,同时也很难提供高级调试功能,因此嵌入式系统的应用软件一般不能直接在嵌入式系统平台上进行开发,而需要在交叉编译环境中开发。
也就是说通常是在另外的开发平台上开发的,一般这种开发平台由通用的计算机系统和专用的嵌入式系统软件开发工具组成。
编译实现方式的发展主要分一下五类:手工、机器语言、汇编、系统程序设计语言、自动构造工具lex yacc gcc。
推动编译技术发展的因素主要包括:语言范型(计算模式)、计算机体系结构语言范型主要包括:命令式(imperative language) 、应用式(applicative) 、基于规则的(rule-based)、面向对象的(object-oriented)、并行计算(parallel computing)。
体系结构主要包括:万诺曼机体系结构、并行体系结构、嵌入系统。
编译程序执行环境主要包括:批处理、交互环境、嵌入系统环境、并行编译技术、交叉编译。
编译程序在一个机器(宿主机)上运行,产生另一个机器(目标机)的汇编语言。
嵌入式系统中的应用程序正是借助这样的编译程序生成。
目标处理器MIPSX是MIPS系列芯片的种,属于RISC体系结构,来源于斯坦福大学的MIPS计划。
由于该系列CPU不是采用加州大学伯克利分校的RISC窗口技术而是采用消除流水线各级互锁的微处理器MIPS(MicroprocessorWithout Interlocking Pipeline Stage)技术,因此而得名。
MIPS是将IBM公司对优化编译程序的研究和加州大学伯克利分校的大规模集成电路的思想结合起来的产品。
由于RISC指令集的简单和整齐,为了达到更好地利用计算机的性能,MIPS 系列芯片中很好地应用了流水线策略。
流水线是现代各类微处理器都采用的指令执行技巧,即将若干条指令的取指、译码和执行过程部分重叠在流水线中同时执行。
以前在CISC计算机中,由于指令多而复杂,处理每条指令的所需时间不固定,当后面指令需要前条指令的结果时,往往造成指令互锁,因此无法实现流水线。
而斯坦福大学的MIPS计划就是在编译的过程中,利用编译程序优化处理器的流水线以求提高处理器流水线的效率。
由于采用了硬件连线控制来执行数目不多的简单指令,而且还能重组软件流水线,这样就减少了硬件复杂性。
通过这一个学期的学习,更让我知道了编译技术的重要性和实用性,激发了我的学习兴趣,对其他相关知识的学习打下了基础。
编译原理这门课不仅仅在于它本身的理论价值,更在于为我们解决问题提供的思维方式和方法。
作为软件工程的基础,我一定会在将来的时间里继续努力钻研这门课程。
费张烨 09923206。