一、GNUC及其可移植的优化编译器(论文文献综述)
杨金才[1](1995)在《GNUC及其可移植的优化编译器》文中认为介绍了GNUC的起源、发展以及对ANSIC的扩展,论述了其编译系统的特点和设计思想,给出了系统的结构和流程。
朱少波[2](2003)在《基于GCC开发C编译器的研究与实践》文中研究说明编译系统是任何计算机系统中不可缺少的重要部分。但是编译系统的研制因其技术复杂、难度较高而需要投入较多的人力、物力和花费较长的研制周期。过去编译系统的研制均是针对某一种程序设计语言和某一种目标机而专门编写的。随着计算机的飞速发展,这种传统的方法已经很难满足需要。进入八十年代后期,随着国外各种软件公司的兴起以及各种计算机芯片不断推陈出新,研制支持多目标机的编译系统越来越显得重要,编译程序的开发者们认识到只有既支持多语种又支持多目标机的编译系统才具有生命力和竞争价值。这种系统实际上是开发编译程序的基础平台,它采用的技术代表着编译技术的发展方向。GNU CC是这种支持多语种、多目标机编译系统中最有代表性的一个系统。它目前已支持的语言有C、C++、Objective C、FORTRAN、ADA;已移植的平台有一百多种,涉及三十多种处理机,六十多种系统。GNU CC之所以有如此广泛的移植和使用,其原因除了它的源代码公开之外,更重要的原因应归于其独特的结构。其清晰的前端语法树结构、高度概括的抽象机中间语言、简洁有力的后端机器描述等三部分为快速实现多语种开发、多平台移植提供了有力的支持。目前,浙江大学信息与通信工程研究所正在进行32位多媒体数字信号处理器(命名为MD-32) 的软硬件开发。由于GNU CC的这种优点,我们选择它对新目标机进行移植。本文作为前导性的尝试,提出一个简单的处理器模型subDLX,通过对subDLX目标机重写机器描述,实现了GCC的成功移植。为以后实现对MD-32移植GCC打下来了基础。在实践过程中我们发现,GCC看似庞大复杂,其实内部结构清晰,技术成熟,它不仅可用来作为开发新语言编译程序或移植至新目标机的基础,同时还可以用于进行新编译技术,如面向新体系结构的优化技术研究与实验。此外,我们借助GCC编译过程中产生的中间代码RTL(Register Transfer Language)文件,重写目标代码生成和优化功能程序,为新的目标机器开发C语言编译器。这个方法不要求程序员精通GCC,能够快速的进入编译器的开发,缩短项目开发周期,理论上可以得到一个更高效的编译器。
王荣胜[3](2007)在《基于ARM的编译器选优技术研究与实现》文中提出随着时代的发展和科技的进步,嵌入式系统已成为当今最热门的概念之一。在嵌入式系统迅猛发展的今天,广泛的应用和需求使嵌入式系统开发不再局限于只能由相关应用领域的高水平专家来完成。正是由于各种优秀的集成丌发环境IDE(Integration Develop Environment)的出现,为广大嵌入式丌发人员提供了强大的工具,使得嵌入式系统开发变得相对简单。本文从应用角度出发,针对目前IDE种类繁多,编译器性能差异明显的现状,提出了一种基于ARM的编译器选优技术,并通过文件格式转换实现多编译器跨平台工作。本文的主要工作包括以下几点:1、研究了嵌入式软件开发的一般方法,分析了使用IDE开发嵌入式软件的优势,并对目前广泛使用的多种IDE进行了研究。2、深入分析了编译器的工作原理,重点研究了编译器的各种优化策略,并对五种基于ARM的编译器进行了比较,提出了编译器生成代码性能的两个重要指标。3、基于ARM920T设计了一套软、硬件测试方法,对五种嵌入式编译器生成代码进行了全面测试,通过分析比较测试结果,针对应用背景选出了性能最优编译器。4、针对IDE环境下编译、链接输出的三种文件格式进行了研究,采用C语言编程实现了最优编译器生成代码的跨平台应用。本文立足于实际应用,研究了编译器选优和跨平台工作技术,目前,相关的研究比较少,本文在这方面进行了初步探索,还有待于进一步地研究。
瞿锋[4](2005)在《基于GCC的DSP C Compiler汇编优化初步》文中进行了进一步梳理GNU GCC编译器已经被广泛应用于CISC、RISC等各种处理平台,是一种支持多平台、多语言的、易于移植的编译系统。随着DSP技术的发展,特别是新一代DSP芯片的诞生,采用汇编语言对DSP进行的程序设计,已经越来越不能满足DSP发展的要求。因此,迫切需要发展能够针对特定DSP芯片的编译器,来进行高级语言的编程。本文通过对GNU GCC编译器的研究,提出了针对具体一个DSP处理器的在编译的汇编阶段的优化方案。 本文首先简要介绍了DSP发展的概况,和目标DSP的一些特点,并对开发的DSP C编译器作了简单说明。随后,分析了GCC的一般基本原理和通用优化方法,并介绍了目标编译器的后端处理方法。在此基础之上,本文根据开发的实际情况和GCC的特点,着重介绍了编译器后端的优化处理方法。针对DSP本身固有的特点,本文以GCC为基础,对编译器产生的局部及全局的DSP汇编代码提出了优化方法,包括单周期的MAC指令,硬件支持的循环,辅助寄存器的分配,基本块内和全局的优化等等,并通过实际指令代码的比较测试,发现优化后的编译器生成的DSP处理器的目标代码具有较高的执行效率。 目前,编译器已经能够稳定地进行包括GCC的基本的优化,新增的基于目标DSP的基本块精简优化、辅助寄存器AR分配替换优化、全局指令精简优化等等。本文的工作对同类DSP处理器的编译优化具有一定的参考价值。
冯钢[5](2004)在《基于GCC的嵌入式系统编译器研究与开发》文中提出随着计算机技术和Internet的飞速发展,新型嵌入式系统正朝着信息家电IA和3C(Computer Communication&Consumer)产品方向发展,广泛的应用于工业控制、通信、仪器仪表和家用消费等领域。嵌入式技术和设备的应用在我国国民经济和国防建设的各个方面存在着广泛的应用领域,有着巨大的市场。可以说它是信息技术的一个新的发展,是信息产业的一个新的亮点。 嵌入式系统本身不具备自举开发能力,必须有交叉编译开发工具和环境才能进行开发。同时,嵌入式系统的特殊产品特征要求软件具有较小代码长度和较快执行速度,因此对相应的软件开发工具有更高的要求。以Linux为主机操作系统,搭配一个交叉编译系统,为嵌入式设备生成可执行程序已成为现在日益流行的编译嵌入式软件的解决方案。而开放源码的编译器GCC,经过多年的发展,已能支持几乎所有知名厂商的处理器,而且优化性能突出,是嵌入式软件开发中理想的交叉编译器。 本论文以嵌入式系统编译器ZLTCC的开发为背景,详细介绍了GCC的体系结构,对其高度可移植性所依赖的中间表示、机器描述技术和后端优化技术进行深入研究,并在此基础上完成了GCC在目标机MIPS-X上的移植和优化工作。而且根据新目标机的特点,通过指令拆分、延时槽调度、寄存器分配和窥孔优化等技术使得生成的目标代码更加紧凑,目标代码大约缩小了10%,同时性能也得到大幅度的提高。 论文首先概述了嵌入式系统的发展对编译器提出的更高要求和代码的优化,然后介绍了编译器系统ZLTCC的开发背景。第二章简要介绍了编译器的自动生成和优化技术。第三章详细分析了GCC的设计思想,系统结构,后端自动生成器、中间语言,机器描述机制、后端生成过程及优化技术。第四章详细介绍了移植GCC的思路和方法、目标机器的体系结构及其应用二进制接口,并就移植的过程实例及移植过程中的难点问题和优化等技术问题进行了深入的探讨,并给出了移植成功后的结果。最后是一点总结和展望。
任小西,李仁发,张克环,郭媛妮[6](2004)在《一种基于多目标设计方法的嵌入式编译器技术》文中研究说明文中概述了当前国际上广泛使用的编译器及相关编译技术,重点论述了编译器的多目标设计方法,其中包括基于体系结构描述语言(ADL)的编译器自动生成方法。最后提出了一种将ADL方法和GCC相结合的编译器多目标设计方法。
张志勇[7](2008)在《基于GNU工具链的ARM-MINIX嵌入式系统交叉编译环境的移植》文中提出信息技术的发展,数字化产品的普及,导致了对嵌入式开发的巨大需求。以Linux为宿主机系统,搭配一个交叉编译环境,为嵌入式设备生成可执行程序己成为现在日益流行的编译嵌入式软件的解决方案。而开放源代码的GNU工具链是一套开源的开发环境,是嵌入式软件开发中理想的交叉编译器。但现有GNU工具链支持的平台并不能满足层出不穷的嵌入式产品的开发需要,仍有许多平台得不到支持,例如我们进行的minix向ARM-MINIX平台的移植。本文以在linux环境下构建MINIX嵌入式系统的交叉编译工具链为背景,首先介绍了交叉编译系统的基本组成和结构,以及利用GCC构建交叉编译环境的优越性。然后对目标平台作了介绍,分析了GCC编译器,说明了GCC的设计思想,系统结构,介绍了GNU Binutils的功能,使用方法;接着分析了GNU工具链中的GAS和GLD的实现机制及源代码结构,由于BFD是GNUBinutils的基础,GAS和GLD都是使用BFD库来操作目标文件,因此在这一部分本文对BFD库的工作机制,数据结构也作了重点分析。紧接着说明了GCC交叉编译系统的移植思路和方法,实现难点,以及一些相关技术细节,这涉及到了若干重要的C源文件,Makefile,配置文件的修改,重点给出了BFD库,GAS和GLD的分析及其重定向(通常GCC生成的目标程序是针对GNU/Linux系统的)的实现;然后本文给出了在GNU/Linux宿主机上构建针对ARM-MINIX的参数设置及过程;最后对本文所做的工作进行了总结。
李敏[8](2014)在《基于ASIP的专用C语言编译器的设计与实现》文中认为作为一种全新的处理器设计方法,ASIP(专用指令集处理器)既具有通用处理器可编程的特点,又具有专用集成电路高效能的优点,近年来已经广泛应用于现代数字信号处理领域。ASIP的设计已经成为嵌入式应用项目的核心任务,ASIP技术的发展也成为业界比较关注的问题。ASIP的设计工作包括硬件电路的设计和软件部分的设计,其中软件部分包括ASIP汇编器和编译器的设计。本文在项目组开发的ASIP系统结构和ASIP可重定向汇编器的基础上,进行了ASIP专用C语言编译器的设计。ASIP专用C语言编译器的开发意义在于,使ASIP工程项目可以采用C语言进行编程,改善了用汇编语言编程效率低和不易检查的不足,提高了项目开发的正确性和高效性。本文对编译器的结构进行了研究,介绍了这种ASIP专用C语言编译器的设计与实现过程,主要进行了以下三方面的工作:1.对编译器理论方面的研究。研究了编译器的结构,并对各阶段的构造方法进行了详细的介绍。在此基础上研究了现在广泛使用于UNIX平台下的编译器GCC,并对其前端可支持多语言、后端可支持多目标的特点进行了深入了解,为ASIP专用C语言编译器的设计工作提供了理论上的支持。2.设计了ASIP专用C语言的编译器。在对编译器设计的理论研究基础上,结合了具体的ASIP硬件结构、指令集和汇编器特点,展开了编译器的详细设计工作。具体包括方案选择、详细设计和测试验证。首先,在对两种设计编译器的方案进行比较后,选择了准确性高、开发周期短的方案,即通过移植一种成熟的可移植的编译器GCC的方法来实现ASIP编译器。其次,根据设计要求,进行了ASIP专用C语言编译器的设计工作,实现将C语言程序翻译为ASIP指令的汇编代码的功能。最后,将编译器嵌入了Dev-C++的开发环境,为其提供了一个界面化的使用环境。3.对ASIP专用C语言编译器的功能与性能进行测试。对ASIP编译器功能的测试从两方面进行,一方面按照ASIP指令集的分类,编写测试程序对编译器的各种基本功能进行测试,另一方面对典型的实现完整功能的C语言程序进行测试。对ASIP编译器性能的探讨主要集中于GCC的代码优化功能,借助于GCC的优化功能,ASIP编译器得到的汇编代码相比于手工直接编写的汇编代码,在性能上更胜一筹。
范海霞[9](2010)在《嵌入式软件覆盖测试的插桩技术研究》文中研究说明随着嵌入式软件的广泛应用以及开发技术的日新月异,相对于硬件的日益稳定,软件却频频出现故障。作为保证软件质量的最有效手段的测试技术,因此越来越引起软件用户以及开发人员的关注。嵌入式软件测试与通用软件的测试相比,有很大不同。嵌入式软件的执行只能在需求所规定的硬件平台上才可以进行;嵌入式软件的开发环境和运行环境也是不一致的,因此即使在宿主机环境下测试再充分,也不能保证在目标机环境下运行该软件就不会出问题。另外,由于嵌入式软件的一些自身特点,例如实时性、内存资源有限、开发工具昂贵等,使得对嵌入式软件测试优化技术的研究尤为重要。程序插桩是嵌入式软件覆盖测试中的关键技术之一,但是伴随着它的应用,产生了程序效率低下、代码膨胀率高等问题,本文的主要任务就是提出优化算法来解决这些问题。本文从三个方面对插桩技术进行了优化,精简测试需求,精简测试用例,减小插桩开销。精简测试需求其目的是用尽可能少的测试用例充分满足给定的测试目标,从而提高效率,降低测试成本。而针对给定的测试目标,获得精简的测试需求集有助于提高测试用例集优化的效率和效果。同时,对插桩位置的选择策略也是一个提高程序运行效率的重要手段,尽量减少插桩探针的数量和探针的执行次数是本文努力的方向。精简测试需求主要是针对源程序的控制流程图进行分析,得到约简后的测试需求。在这个基础上,产生测试用例,利用广义后继支配图算法来生成最小的测试用例集,使其覆盖必需的测试需求。最后讨论了插桩开销的问题,即探针的插桩数量和执行次数。利用虚拟结点法来改进控制流程图,减小插桩开销。为了达到较好的交叉测试的效果,采用了gcc以及开源工具gcov,并对其进行了改进,使得宿主机与目标机之间进行数据传输。最后进行环境的搭建,采用skyeye来仿真硬件环境,从而搭建测试平台,对gcc和gcov进行了算法改进,并给出测试用例来说明这种改进效果。
訾国伟[10](2008)在《基于软核处理器的嵌入式操作系统的研究与应用》文中研究指明嵌入式操作系统(Embedded Operating System,简称EOS)是专用于嵌入式系统的操作系统。按照实时性,分为实时操作系统(Real-Time Operating System,简称RTOS)和非实时操作系统。μC/OS-Ⅱ和μClinux是这两种操作系统的代表。Altera公司的NiosⅡ是目前应用最广泛的软核处理器(soft core processor)。μC/OS-Ⅱ已经被Altera公司移植到NiosⅡ处理器上并集成到NiosⅡ集成开发环境NiosⅡIDE中,μClinux也由第三方的Microtronix公司移植到NiosⅡ处理器上,但仅用于商业用途,不支持软件定制,而且不能支持NiosⅡIDE 5.0后续版本。本文研究了上述两种嵌入式操作系统在软核处理器NiosⅡ上的移植问题,提出了使用μClinux原发布包移植μClinux到NiosⅡ处理器的方法。该方法使用μClinux原发布包取代了商用的MicrotronixμClinux发布包,在两种主要的NiosⅡ开发板上分别成功移植了μClinux的两个最新版本,使得在NiosⅡ平台开发基于μClinux的应用程序摆脱了NiosⅡIDE版本的限制,而且可以使用各种稳定版本的开源μClinux,为在NiosⅡ平台上开发复杂的非实时性应用提供了软件平台。本文对移植到NiosⅡ开发板上的μClinux进行了多进程测试。测试使用操作系统原理中经典的生产者/消费者模式,利用信号量实现了嵌入式平台上的进程同步。本文还在μC/OS-Ⅱ上通过为SD卡集成μC/FS文件系统,完成了NiosⅡ平台上SD卡的软件开发;利用μClinux提供的DM9000A网卡驱动,实现了一个简单的嵌入式Web Server,还使用USB摄像头完成了对μClinux的USB驱动的测试。通过实验证明在移植嵌入式操作系统后的NiosⅡ处理器平台进行软件开发有驱动接口丰富、支持软件定制和裁剪、代码公开的优势。
二、GNUC及其可移植的优化编译器(论文开题报告)
(1)论文研究背景及目的
此处内容要求:
首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。
写法范例:
本文主要提出一款精简64位RISC处理器存储管理单元结构并详细分析其设计过程。在该MMU结构中,TLB采用叁个分离的TLB,TLB采用基于内容查找的相联存储器并行查找,支持粗粒度为64KB和细粒度为4KB两种页面大小,采用多级分层页表结构映射地址空间,并详细论述了四级页表转换过程,TLB结构组织等。该MMU结构将作为该处理器存储系统实现的一个重要组成部分。
(2)本文研究方法
调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。
观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。
实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。
文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。
实证研究法:依据现有的科学理论和实践的需要提出设计。
定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。
定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。
跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。
功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。
模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。
三、GNUC及其可移植的优化编译器(论文提纲范文)
(2)基于GCC开发C编译器的研究与实践(论文提纲范文)
中文摘要 |
英文摘要 |
致谢 |
第一章 绪论 |
1. 1 为什么要用编译器 |
1. 2 与编译器相关的程序 |
1. 3 翻译步骤 |
1. 4 编译器中的主要数据结构 |
1. 5 编译器结构中的其他问题 |
1. 6 自举与移植 |
第二章 GCC编译器 |
2. 1 GCC简介 |
2. 1. 1 GNUC的起源与发展 |
2. 1. 2 GCC的步骤 |
2. 2 词法分析和语法分析 |
2. 2. 1 GCC词法分析程序的主要功能 |
2. 2. 2 词法分析程序的流程图及其说明 |
2. 2. 3 GCC语法和语义分析程序的主要功能 |
2. 2. 4 语法和语义分析程序的流程图及其说明 |
2. 3 中间代码产生 |
2. 3. 1 GCC的中间语言 |
2. 3. 2 RTL中间代码的生成 |
2. 3. 3 为控制语句产生RTL代码 |
2. 4 编译优化 |
2. 4. 1 基于RTL的优化 |
2. 4. 2 寄存器分配 |
2. 5 汇编代码生成 |
第三章 为subDLX模型移植GCC |
3. 1 技术背景 |
3. 2 编译器设计 |
3. 2. 1 为什么选择GCC |
3. 2. 2 GCC的设计思想 |
3. 2. 3 GCC的系统结构与流程 |
3. 3 虚拟处理器(subDLX)模型 |
3. 3. 1 subDLX的寄存器 |
3. 3. 2 subDLX的数据类型 |
3. 3. 3 subDLX的寻址模式 |
3. 3. 4 subDLX的指令集 |
3. 4 目标机(subDLX)描述宏 |
3. 4. 1 subDLX的存储格式 |
3. 4. 2 subDLX的寄存器使用 |
3. 4. 3 subDLX栈的布局 |
3. 4. 4 subDLX函数的入口、出口及调用约定 |
3. 4. 5 给subDLX汇编输出分区 |
3. 5 虚拟处理器(subDLX)的机器描述 |
3. 6 机器描述与编译之间的接口 |
3. 7 本章小结 |
第四章 基于GCC RTL中间代码,为特定DSP设计C编译器 |
4. 1 RTL中间语言 |
4. 1. 1 标准RTL语句--INSN |
4. 1. 2 RTL基本元素--rtx |
4. 1. 3 RTL操作码简介 |
4. 1. 4 RTL机器模式 |
4. 2 基于RTL中间代码,为特定DSP设计C编译器结构简介 |
4. 3 基于RTL中间语言的汇编代码生成 |
4. 3. 1 代码生成方法 |
4. 3. 2 代码生成和优化器结构 |
4. 3. 3 RTL语句展开 |
4. 3. 4 RTL操作数结构分析 |
4. 3. 5 RTL基本指令提取 |
4. 3. 6 从RTL行为级描述到汇编代码输出 |
4. 4 本章小结 |
全文总结 |
参考文献 |
作者攻读硕士学位期间发表或合作发表的论文 |
(3)基于ARM的编译器选优技术研究与实现(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 引言 |
1.2 嵌入式系统概述 |
1.2.1 嵌入式系统的发展历史和现状 |
1.2.2 嵌入式系统的体系结构及特征 |
1.2.3 ARM微处理器 |
1.3 嵌入式软件开发和集成开发环境IDE |
1.3.1 嵌入式应用软件开发 |
1.3.2 集成开发环境IDE |
1.4 研究背景与论文主要工作 |
1.4.1 课题研究背景 |
1.4.2 论文主要工作 |
1.4.3 论文的组织 |
第二章 编译器研究 |
2.1 编译器组成与工作流程 |
2.2 编译器的优化策略 |
2.2.1 编译器代码优化的目的和原则 |
2.2.2 编译器优化策略分析 |
2.3 开放源代码的GCC编译器分析 |
2.3.1 GCC结构分析 |
2.3.2 GCC编译器的优化策略分析 |
2.3.3 GCC编译器的优缺点 |
2.4 基于 ARM的编译器 |
2.5 本章小结 |
第三章 编译器性能软、硬件测试及选优 |
3.1 软件测试 |
3.1.1 代码密度测试 |
3.1.2 代码执行效率测试 |
3.2 硬件测试 |
3.2.1 硬件开发板 |
3.2.2 硬件测试的准备 |
3.2.3 硬件测试的实现 |
3.3 软、硬件测试结果分析及编译器选优 |
3.4 本章小结 |
第四章 文件格式转换 |
4.1 ELF目标文件格式转换 |
4.2 二进制可执行文件格式转换 |
4.3 汇编语言文件格式转换 |
4.4 汇编文件格式转换的编程实现 |
4.5 本章小结 |
致谢 |
参考文献 |
作者在学期间取得的学术成果 |
(4)基于GCC的DSP C Compiler汇编优化初步(论文提纲范文)
中文摘要 |
Abstract |
第一章 DSP综述 |
1.1 数字信号处理技术概述 |
1.2 DSP技术发展概述 |
1.3 DSP结构介绍 |
1.4 目标DSP概要 |
1.5 DSP C编译器开发说明 |
第二章 GCC原理和移植 |
2.1 GCC简介 |
2.2 GCC编译流程 |
2.3 DSP C编译器结构简介 |
2.4 RTL介绍 |
2.5 GCC移植中的后端处理 |
2.5.1 RTL指令处理 |
2.5.2 汇编指令描述 |
第三章 编译优化策略 |
3.1 概述 |
3.2 GCC通用代码优化策略 |
3.3 基于DSP的特定优化 |
3.3.1 依据单周期的乘加器(MAC)的优化 |
3.3.2 硬件支持的循环算法的优化 |
3.3.3 基本块内的优化 |
3.3.4 局部寄存器和辅助寄存器AR分配的优化 |
3.3.5 全局汇编指令精简优化 |
3.3.6 综合优化 |
第四章 结论与展望 |
4.1 结论 |
4.2 展望 |
参考文献 |
攻读硕士期间发表的论文 |
致谢 |
中文详细摘要 |
(5)基于GCC的嵌入式系统编译器研究与开发(论文提纲范文)
第一章 绪论 |
1.1 嵌入式系统及其对编译系统的要求 |
1.2 ZLTCC编译系统简介 |
1.3 相关的工作 |
第二章 编译系统的自动生成和优化 |
2.1 编译系统的体系结构 |
2.2 编译程序的自动生成 |
2.2.1 编译程序生成器的结构 |
2.2.2 词法分析程序的自动生成 |
2.2.3 语法分析程序的自动生成 |
2.2.4 语义分析程序生成器 |
2.2.5 代码生成程序的自动生成 |
2.3 编译后端技术研究 |
2.3.1 中间代码的优化 |
2.3.2 局部优化策略 |
2.3.3 循环优化策略 |
2.3.4 全局优化策略 |
2.3.5 代码生成 |
2.3.6 代码生成的信息表示 |
2.3.7 寄存器分配 |
2.3.8 窥孔优化策略 |
第三章 GCC编译器内核剖析 |
3.1 GCC的设计思想 |
3.2 GCC体系结构 |
3.3 GCC的后端自动生成器 |
3.3.1 “gen~*”生成器 |
3.4 RTL(Register Transfer Language) |
3.4.1 RTL简介 |
3.4.2 函数的RTL表示 |
3.5 目标机器描述(Machine Description) |
3.5.1 模板 |
3.5.2 标准指令 |
3.5.3 宏定义 |
3.6 后端及优化分析 |
3.6.1 RTL生成(RTL Generater) |
3.6.2 寄存器扫描(Register Scan) |
3.6.3 跳转优化(Jump Optimization) |
3.6.4 基于SSA的优化 |
3.6.5 删除公共子表达式(Common Subexpression Elimination) |
3.6.6 循环优化(Loop optimization) |
3.6.7 数据流分析(Data Flow Analysis) |
3.6.8 指令合并(Instructions Combination) |
3.6.9 指令调度(Instruction Scheduling) |
3.6.10 寄存器分配(Register Allocation) |
3.6.11 延迟分支调度(Delay Branch Scheduing) |
3.6.12 汇编代码生成 |
第四章 移植工作 |
4.1 移植的思路和方法 |
4.2 目标机器体系结构 |
4.2.1 寄存器 |
4.2.2 存储空间 |
4.2.3 MIPS-X指令集 |
4.3 目标机器ABI(Application Binary Interface) |
4.3.1 MIPS-X的数据表示 |
4.3.2 MIPS-X的函数调用 |
4.4 交叉编译器在MIPS-X上的移植 |
4.4.1 移植目标机头文件 |
4.4.2 移植目标机描述文件 |
4.4.3 移植目标机C文件 |
4.5 移植问题及优化 |
4.5.1 内存寻址问题 |
4.5.2 寄存器分配问题 |
4.5.3 延时槽的处理 |
4.5.4 指令的属性 |
4.5.5 指令的分割 |
4.5.6 GCC自身的错误 |
4.6 测试 |
第五章 总结与展望 |
参考文献 |
致谢 |
(6)一种基于多目标设计方法的嵌入式编译器技术(论文提纲范文)
1 引言 |
2 编译器设计 |
3 常规多目标设计方法 |
4 体系结构描述语言 (ADL) |
5 GCC与ADL相结合 |
6 小结 |
(7)基于GNU工具链的ARM-MINIX嵌入式系统交叉编译环境的移植(论文提纲范文)
摘要 |
Abstract |
第一章 概论 |
1.1 嵌入式系统介绍 |
1.2 ARM to minix项目介绍 |
1.3 交叉编译系统 |
1.3.1 编译器的结构 |
1.3.2 交叉编译的必要性 |
1.3.3 主流平台开发工具 |
1.4 利用GNU工具链构建ARM-MINIX嵌入式系统的开发环境 |
1.4.1 利用GNU工具链构建嵌入式系统开发环境的优越性 |
1.4.2 利用GNU工具链构建ARM-MINIX嵌入式系统的开发环境 |
第二章 目标平台和GNU工具链 |
2.1 ARM体系结构和minix的a.out格式 |
2.1.1 ARM体系结构 |
2.1.1.1 内存空间 |
2.1.1.2 ARM的内部寄存器 |
2.1.2 minix的a.out格式剖析 |
2.1.2.1 a.out格式目标文件的结构 |
2.1.2.2 minix的a.out格式 |
2.2 GNU工具链 |
2.2.1 GCC简介 |
2.2.2 GCC编译系统的结构及其工作流程 |
2.2.2.1 GCC编译系统的工作流程 |
2.2.2.2 GCC编译器的结构 |
2.2.3 GNU Binutils工具包和make项目管理工具 |
2.2.3.1 GNU Binutils工具包 |
2.2.3.2 GNU make项目管理工具 |
第三章 GAS和GLD的实现机制分析 |
3.1 BFD库 |
3.1.1 BFD的顶层结构 |
3.1.2 BFD内部工作机制分析 |
3.1.2.1 BFD前端 |
3.1.2.2 BFD库代码 |
3.1.2.3 BFD的后端 |
3.1.3 BFD的重要数据结构 |
3.2 GAS的分析 |
3.2.1 GAS的数据类型 |
3.2.2 GAS源代码分析 |
3.2.2.1 GAS的目录结构 |
3.2.2.2 GAS源代码的主要文件及作用 |
3.2.3 GAS的结构 |
3.2.4 GAS的工作流程 |
3.3 连接器GLD的分析 |
3.3.1 连接器GLD的作用 |
3.3.2 连接器GLD的工作机制 |
3.3.3 GNU LD的数据结构 |
3.3.4 GLD的实现机制分析 |
第四章 移植GCC交叉编译系统 |
4.1 交叉编译器移植的思路 |
4.1.1 GCC各模块分析: |
4.1.2 GCC交叉编译器移植的一般过程 |
4.2 BFD地移植 |
4.3 GAS地移植 |
4.4 GLD地移植 |
第五章 交叉编译环境的构建 |
5.1 建立交叉编译系统的一般步骤 |
5.2 交叉编译系统的构建 |
5.2.1 准备阶段 |
5.2.2 修改Binutils和GCC |
5.2.2.1 添加目标target到Binutils |
5.2.2.2 添加目标到GCC |
5.2.3 移植newlib库 |
5.2.4 构建针对arm-minix的交叉编译系统 |
第六章 总结 |
参考文献 |
致谢 |
(8)基于ASIP的专用C语言编译器的设计与实现(论文提纲范文)
摘要 |
ABSTRACT |
符号对照表 |
缩略语对照表 |
第一章 绪论 |
1.1 论文选题背景 |
1.2 编译器简介 |
1.3 ASIP技术简介 |
1.4 研究内容及章节安排 |
第二章 编译器的内部结构研究 |
2.1 编译器介绍 |
2.2 编译器的关键技术 |
2.2.1 编译器中的数据结构 |
2.2.2 词法分析 |
2.2.3 语法分析 |
2.2.4 语义分析 |
2.2.5 中间代码生成 |
2.2.6 目标代码生成 |
2.2.7 代码优化 |
2.3 GCC介绍 |
2.4 GCC的可移植性 |
2.4.1 GCC的体系结构 |
2.4.2 GCC可移植性的关键技术 |
2.4.3 GCC的中间语言RTL |
2.5 本章小结 |
第三章 ASIP体系结构及可重定向汇编器 |
3.1 ASIP体系结构 |
3.2 ASIP指令集 |
3.3 ASIP可重定向汇编器 |
3.4 本章小结 |
第四章 ASIP专用C语言编译器的设计与实现 |
4.1 编译器的设计方案 |
4.2 编译器的具体实现 |
4.2.1 目标机描述文件asip.h和asip.c |
4.2.2 指令模式文件asip.md |
4.3 编译器的使用与测试 |
4.3.1 编译器功能测试 |
4.3.2 编译器性能测试 |
4.4 编译器的集成开发环境 |
4.5 本章小结 |
第五章 总结与展望 |
5.1 总结 |
5.2 展望 |
附录 各测试程序的编译结果 |
参考文献 |
致谢 |
作者简介 |
(9)嵌入式软件覆盖测试的插桩技术研究(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 研究背景及意义 |
1.2 论文研究内容及目标 |
1.3 论文创新点 |
1.4 论文结构安排 |
第二章 嵌入式软件覆盖测试理论 |
2.1 嵌入式系统及嵌入式软件 |
2.1.1 嵌入式系统 |
2.1.2 嵌入式软件 |
2.2 软件测试 |
2.2.1 软件测试概述 |
2.2.2 嵌入式软件测试 |
2.2.3 嵌入式软件测试的分类 |
2.2.4 覆盖测试的流程 |
2.2.5 覆盖测试的代码插桩 |
2.2.6 覆盖测试的代码覆盖分析 |
2.2.7 嵌入式软件覆盖测试 |
2.3 本章小结 |
第三章 嵌入式软件覆盖测试插桩技术的研究 |
3.1 覆盖测试的插桩技术 |
3.1.1 插桩技术的介绍 |
3.1.2 插桩技术的重要性 |
3.2 覆盖测试中插桩问题 |
3.2.1 代码膨胀问题 |
3.2.2 程序执行效率问题 |
3.3 插桩技术问题的解决方法 |
3.3.1 测试需求精简 |
3.3.2 精简测试用例 |
3.4 本章小结 |
第四章 插桩技术的优化算法 |
4.1 超块支配图算法 |
4.1.1 控制流程图相关概念 |
4.1.2 超块支配图求解方法 |
4.2 最小核心集算法 |
4.2.1 最小核心集的定义及定理 |
4.2.2 最小核心集的求解方法 |
4.3 广义后继支配图算法 |
4.3.1 广义支配图的定义 |
4.3.2 广义后继支配图算法 |
4.4 虚拟结点法 |
4.4.1 插桩开销问题 |
4.4.2 虚拟结点法 |
4.5 本章小结 |
第五章 插桩技术优化算法在gcc 中的实现 |
5.1 嵌入式软件的覆盖测试环境 |
5.1.1 嵌入式仿真环境SkyEye |
5.1.2 SkyEye 模拟硬件介绍 |
5.1.3 通信连接方式 |
5.1.4 数据传输 |
5.1.5 测试环境搭建 |
5.2 嵌入式软件覆盖测试工具 |
5.2.1 gcc 工作原理 |
5.2.2 gcov 工作原理 |
5.3 插桩技术的优化算法在gcc 中的实现 |
5.3.1 最小核心集算法 |
5.3.2 虚拟结点算法 |
5.3.3 gcov 给出覆盖率 |
5.4 本章小结 |
第六章 总结与展望 |
6.1 总结 |
6.2 展望 |
参考文献 |
致谢 |
在学期间的研究成果及发表的学术论文 |
(10)基于软核处理器的嵌入式操作系统的研究与应用(论文提纲范文)
致谢 |
中文摘要 |
ABSTRACT |
序 |
1 引言 |
1.1 研究背景与目的 |
1.2 论文创新与应用价值 |
1.3 本论文工作与组织结构 |
2 嵌入式操作系统的特色和发展趋势 |
2.1 嵌入式操作系统概述 |
2.2 嵌入式操作系统的发展和现状 |
2.2.1 实时操作系统μC/OS-Ⅱ |
2.2.2 非实时操作系统μClinux |
2.2.3 μC/OS-Ⅱ和μClinux的比较 |
2.3 本章小结 |
3 嵌入式操作系统在软核处理器上的移植 |
3.1 嵌入式操作系统移植的关键问题 |
3.1.1 处理器类型 |
3.1.2 内核引导 |
3.1.3 文件系统选择 |
3.1.4 虚拟内存 |
3.2 μC/OS-Ⅱ在Nios Ⅱ处理器上的移植 |
3.2.1 μC/OS-Ⅱ目标处理器要求 |
3.2.2 μC/OS-Ⅱ源代码修改 |
3.3 μClinux在Nios Ⅱ处理器上的移植 |
3.3.1 使用μClinux的第三方发布包Microtronix μClinux |
3.3.2 使用μClinux的原发布包μClinux-dist |
3.3.3 两种移植方法比较 |
3.4 本章小结 |
4 嵌入式操作系统在Nios Ⅱ处理器上的移植实例 |
4.1 移植环境和资源 |
4.1.1 Nios Ⅱ开发板 |
4.1.2 μClinux版本 |
4.1.3 Windows平台软硬件集成开发环境 |
4.1.4 Linux平台编译环境 |
4.2 μClinux移植过程分析 |
4.2.1 生成硬件设备描述文件 |
4.2.2 建立交叉编译环境 |
4.2.3 创建和装载μClinux内核映像以及根文件系统 |
4.2.4 编译和添加μClinux用户应用程序 |
4.2.5 编译μClinux内核和文件系统的其它方法 |
4.3 本章小结 |
5 基于Nios Ⅱ处理器的嵌入式操作系统测试与应用 |
5.1 μC/OS-Ⅱ的应用 |
5.1.1 基于μC/OS-Ⅱ的SD卡使用 |
5.2 μClinux的测试 |
5.2.1 μClinux测试环境 |
5.2.2 μClinux测试方法 |
5.2.3 μClinux过程和结果分析 |
5.3 μClinux的应用 |
5.3.1 μClinux驱动以太网卡 |
5.3.2 μClinux驱动USB摄像头 |
5.4 本章小结 |
6 结论 |
参考文献 |
作者简历 |
学位论文数据集 |
四、GNUC及其可移植的优化编译器(论文参考文献)
- [1]GNUC及其可移植的优化编译器[J]. 杨金才. 地质科技管理, 1995(01)
- [2]基于GCC开发C编译器的研究与实践[D]. 朱少波. 浙江大学, 2003(01)
- [3]基于ARM的编译器选优技术研究与实现[D]. 王荣胜. 国防科学技术大学, 2007(07)
- [4]基于GCC的DSP C Compiler汇编优化初步[D]. 瞿锋. 苏州大学, 2005(12)
- [5]基于GCC的嵌入式系统编译器研究与开发[D]. 冯钢. 浙江大学, 2004(03)
- [6]一种基于多目标设计方法的嵌入式编译器技术[J]. 任小西,李仁发,张克环,郭媛妮. 计算机应用, 2004(02)
- [7]基于GNU工具链的ARM-MINIX嵌入式系统交叉编译环境的移植[D]. 张志勇. 兰州大学, 2008(01)
- [8]基于ASIP的专用C语言编译器的设计与实现[D]. 李敏. 西安电子科技大学, 2014(03)
- [9]嵌入式软件覆盖测试的插桩技术研究[D]. 范海霞. 南京航空航天大学, 2010(08)
- [10]基于软核处理器的嵌入式操作系统的研究与应用[D]. 訾国伟. 北京交通大学, 2008(05)