一、编译系统中间代码的一种抽象表示(论文文献综述)
严希锐[1](2021)在《一种终端智能设备低代码编程的实现》文中研究表明随着物联网技术的发展,功能多样化的终端智能设备在为人们的生产生活带来便利的同时,也暴露出用户需求迭代困难、开发人员准入门槛高、设备资源类型复杂无法对系统中的数据资源进行有效的利用等一系列问题。针对上述问题,本课题提出一种终端智能设备低代码编程的实现,旨在为使用者提供一种应用需求快速迭代以及支持普通用户对终端智能设备编程的系统。本课题提出了概念组件的定义,对物联网应用中的设备资源进行虚拟化的管理,并建立了一种对终端智能设备及其外设资源的虚拟化管理机制,使开发人员和用户无需关注底层设备的具体类型,仅需按照自身的应用场景与需求对终端智能设备进行概念组件的属性配置以及控制逻辑的配置,从而实现对终端智能设备资源的操作与管理。为实现开发人员和用户对概念组件进行个性化操作,本课题设计了一套新型指令操作集和策略文法。其中,新型指令操作集为使用者提供对概念组件的操作,策略文法则是规范使用者的控制策略配置和指导程序逻辑的一种语法规则。本课题的系统采取分层的结构设计,分别是设备驱动层、人机交互层、网络通信层、解析编译层、任务执行层。使用者通过人机交互层对设备资源进行概念组件化,并通过对概念组件进行控制策略的配置,实现对设备资源的管理。解析编译层对网络层交付的使用者控制策略信息进行词法分析、语法分析,将解析得到的四元式结构作为参数,生成任务函数注册到任务列表中。执行层对任务列表中的任务进行调度,通过设备驱动层来管理终端设备的数据交互,从而完成用户策略的程序功能实现。本课题根据各层功能设计了整体的服务程序,并对终端智能设备低代码编程的实现进行了应用环境下的功能测试。
侯璇[2](2021)在《基于图神经网络的指令选择研究》文中研究说明目前,国内外大多数的芯片在编译后端处理指令选择的过程中出于对稳定性、可靠性、可用性等因素的考虑,仍然沿用传统的基于宏扩展或图覆盖的算法。由于芯片计算性能的不断提升和指令集的不断扩充等因素,这些指令选择策略存在不可自动地迭代更新、不能充分利用平台指令集中高效指令的优势等不足,并不能很好地适应这种变化。实质上,指令选择拆可分为两个过程,分别是模式匹配和模式选择两个问题。对于模式匹配问题本文使用近些年比较热门的图神经网络模型来解决,借助于图神经网络模型能够运行在图这种的非欧式数据,实现图间的匹配功能,给出一个候选指令集,作为匹配集。接着对于模式选择问题,本文使用元启发式算法来处理。由于可行的指令组合不止一种,因此可以利用元启发式算法对于相同的匹配集作为输入,其得到的输出有可能是不同的特点,输出不同的指令组合。本文以BWDSP平台的程序和其指令集为平台依托,通过实验验证了这两种方法在编译后端领域的实际应用性能,并通过与传统的指令选择策略的对比实验,证明了这种指令选择策略的高效性,不仅能够从降低程序执行的代价上,充分利用BWDSP指令集中特殊和复杂指令的高效性,而且以将此种策略应用到其它的机器平台的指令选择上,或编译后端的其它子流程中为目标,提高了这种指令选择策略的可拓展和可移植性。本文的主要工作如下:(1)对BWDSP芯片的指令集进行指令建模。每一条BWDSP指令都可以在添加语义规则后表示为图结构。这种结构必须与BWDSP程序的图结构有着相同属性的构造,因而对于BWDSP程序和指令集的图结构建模都必须沿用一套语义规则标准。本文据此提出的语义规则标准设计了自动化生成图结构的工具。(2)对BWDSP程序进行CDFG建模。将BWDSP源程序中的控制流(Con-trol Flow)和数据流(Data Flow)按照依赖关系联系为一个整体,即数据控制流,可以得到CDFG(Control Data Flow Graph)。并对源程序进行分类、扩充,得到不同指令类别对应的CDFG指令图集,作为图神经网络的数据集。(3)设计和改进图神经网络模型结构,以获取候选指令集合。本文将经典的归纳学习图神经网络GraphSAGE和图同构网络模型GIN加以改进,提出一种新的图神经网络模型-GINSA,应用到指令选择过程的模式匹配中,该模型是针对BWDSP建模后的程序CDFG和指令图集而提出的模型,将模型给出的指令作为候选指令,并与实际程序的所采用的指令之间对比,通过执行效率来验证模型所选指令的高效性。(4)使用元启发式算法,从候选指令集中选择最佳的指令组合作为最终的指令组合。元启发式算法能够解决本质上是组合优化问题的模式选择问题,将图神经网络所选择出的候选指令集作为匹配集,元启发式算法作为选择器,最终的结果是从匹配集中选择可行的指令组合作为最终的指令组合。本文通过以上的工作,使用基于LINUX系统上的BWDSP1042模拟器,LLVM8.0 Release版本作为数据集构建的环境架构以及Nvidia GeForce RTX 2060显卡用于图神经网络模型的训练和元启发式算法的搜索加速,实验以最终的指令组合与源程序所使用的指令之间性能的对比作为评判标准,验证了本文的指令选择策略的优势。
徐棽[3](2021)在《面向安卓平台的应用兼容性问题检测技术研究》文中指出近年来,安卓生态系统迎来了飞速的发展,安卓应用和安卓设备也呈现了爆发式增长。由于设备间的差异性,安卓应用难以保证在不同设备上功能的一致性,兼容性问题由此而生。针对这一现状,安卓开发者普遍使用软件测试的手段对应用的兼容性问题进行排查。学术界现有的方法主要关注于辅助开发者进行动态检测,以实现减少测试开销的目标。然而,如何识别、定位以及修复安卓应用代码中的兼容性问题,仍然是悬而未决的问题。因此,亟需一种全新的兼容性问题应对方案,可以在保证效率的前提下自动化的解决兼容性问题。针对此挑战,本文围绕如何解决安卓应用的兼容性问题,开展了以下研究工作:1.提出了一种基于多模态分析的安卓兼容性问题疑似应用识别方法。本研究致力于帮助相关人员快速识别会带来兼容性问题的安卓应用,进而能够针对性地对应用进行检测,并解决应用功能难以在不同设备上保持一致性的现状。本研究的挑战在于,安卓应用中信息语义复杂,无法保证抽取信息的有效性。为了解决这一挑战,本研究基于对兼容性问题成因的洞察,对应用信息进行了细粒度多模态的抽取,同时手动构建了能反映兼容性疑似与否的数据集,并使用统计检验方法,实现对应用多模态信息有效性的分析,并选取了有效的模态信息以实现对目标应用的识别。实验结果表明,该方法可适用于兼容性问题疑似应用的检测。2.提出了一种基于分布偏差的兼容性缺陷API自动识别的方法。本研究致力于帮助开发者识别代码层中会导致兼容性问题的API,进而能够针对性的对应用代码层进行修改,以大大减少应对兼容性问题的开发成本。本研究的挑战在于,API的数量级导致的分析成本巨大;且兼容性缺陷API包含不同成因,现有自动化方案都只能识别一类特定的目标API。为了解决这一挑战,本研究采用动静态分析相结合的手段,对应用中API的控制依赖关系进行分析,进而对兼容性相关代码段进行了识别,构建了目标API的候选集,以缩小搜索空间;之后依靠兼容性缺陷API在不同代码段中的分布偏差,对候选集中的目标API进行细粒度的精确识别。在真实的安卓应用数据集上的实验结果表明,该方法能够有效的识别不同成因的兼容性缺陷 API。3.提出了一种针对安卓应用兼容性问题的自动代码修复方案。本研究内容旨在进一步减少开发者在解决兼容性问题上的开销,为开发者自动化地改良存在兼容性缺陷的代码段。本研究的挑战在于,如何判断代码是否存在问题,以及如何对问题代码进行修复。为了解决这一挑战,本研究先对应用中的兼容性缺陷API进行定位,并通过后向分析确定目标API是否会造成兼容性问题;之后通过先前对该API兼容性成因的条件捕获,结合静态代码插桩技术,补全应有的条件判断,进而修复兼容性问题。实验结果证明,该方法能有效的修复代码中潜在的兼容性问题,同时时间消耗较少。
唐佩佳[4](2020)在《基于标记的跨平台并行编程框架设计与实现》文中研究表明随着并行计算技术的发展和普及,业界存有大量的串行应用程序需要迫切改造为并行程序,来提高数据处理能力。而串行程序并行化面临两个基本问题:(1)并行编程的高成本问题。并行编程需要专业的并行编程能力和丰富的工程经验,开发并行程序需要大量的工程成本和时间。(2)并行平台的多样性问题。随着各种并行硬件平台和并行编程模型数量的增加,并呈现出多样化,需要具备快速生成所需目标并行平台的并行程序的能力。针对上述两个问题,需要通过高效易用的并行编程框架来辅助并行编程。为此,本文设计并实现了一种基于标记语言的三层并行编程框架,主要的思路和方法是:(1)并行编程框架结构设计。设计了三层框架结构,分别是串行程序层、并行中间代码层、目标并行编程语言程序层。通过对串行代码进行语言标记来实现有并行语义的并行中间代码层,再对并行中间代码层进行代码解析来实现可执行的目标并行编程语言程序层,其中并行中间代码层实际是多种并行平台编程模型的一种抽象,与具体并行平台无关。(2)并行机制与标记语言设计。通过对多种并行编程模型(共享存储并行模型、分布式存储并行模型、多任务操作系统并行模型和GPU并行模型)下的数据并行任务进行抽象,建立了基于数据并行的标准任务模型,包括三个计算阶段:数据划分和分发、数据计算、数据收集和规约。设计了一套并行标记方法用于表达与平台无关的并行语义,来辅助并行编程框架进行代码解析,代码解析系统将带有标记的串行程序转化为用户指定平台的并行程序,实现串行程序跨平台并行化。(3)辅助支撑系统设计。设计了性能标记方法用于程序性能参数的自动寻优,这些寻优参数为线程数和进程数、任务负载量等,寻优系统提升了并行程序的性能。此外,还包括用户搭建跨平台并行计算环境和设置并行条件等。本文框架适用于多种软件平台(Windows、Linux、VxWorks)和硬件平台(X86和PowerPC)下的以计算为主的流数据处理任务。最后,将并行编程框架应用于某工程数据处理项目。项目应用反映了框架可以产生用户指定并行平台的并行程序,且计算结果与对应串行程序结果一致;并且评估了框架在共享存储平台和分布存储平台下产生的并行程序的性能,其加速比与人工编写的并行程序相当。
操旺根[5](2020)在《Java并发程序中数据竞争的静态检测工具的设计与实现》文中认为随着云计算、大数据的兴起和各种分布式系统的应用,并发编程也变得越来越流行。然而并发程序编写容易出错,数据竞争就是并发程序中典型的缺陷,它是指多个线程在没有经过同步的情况下同时对共享内存变量进行了访问,并且其中至少有一个写访问。数据竞争在并发程序中经常出现且不易觉察、隐藏较深、难以复现。为了保证系统稳定安全地运行,实习公司提出要设计一款检测Java并发程序中数据竞争问题的检测工具。本文在阅读大量国内外文献的基础上,通过综合运用多种静态分析技术提出了一种能够检测Java并发程序中数据竞争缺陷的静态检测方法,并实现了相应的检测工具。首先,使用soot分析框架将被检测代码转换成易于分析的Jimple中间形式;其次,使用控制流分析和数据流分析对程序执行流程进行建模,构造线程内和线程间的控制流图和函数调用图;再次,定义和提取线程中变量的内存访问事件;然后,使用数据竞争形成条件算法对生成的内存变量访问事件集合进行笛卡尔积运算,判定可能会产生数据竞争的内存变量访问事件。在判定数据竞争的同时对变量访问事件进行并发性分析和别名分析,以降低工具的误报率和漏报率。最后,本文设计和实现了该检测工具,并选取了八个包含数据竞争缺陷的程序作为实验对象,经过实验验证,本论文工具在漏报率、误报率和检测效率上均表现良好,可以有效地检测出Java并发程序中的数据竞争缺陷。
闾乐成[6](2020)在《面向路径代码有界模型检验的系统优化技术研究》文中进行了进一步梳理随着社会信息化程度的不断提高,计算机在各行各业扮演的角色越来越重要,软件系统的安全问题也因此愈发受到重视。而C语言在航空航天、地铁运输、国防安全等关键领域使用广泛,因此保障C代码的正确性非常重要,研究人员基于传统模型检验技术研发了多款面向C代码的模型检验工具如CBMC、CPAChecker等等。但以上方法和工具都是针对代码转化得到的整体问题进行验证,随着代码规模的不断扩大会导致状态空间爆炸的问题,使得问题规模超出底层求解器支持,验证效率低下。为此,在之前的工作中,我们已经提出了一种面向路径的有界模型检验算法SAT-LP-IIS,该算法将单次验证对象限制为一条程序执行路径,能够一定程度上控制验证复杂度,并以此为基础实现了一个简单工具原型。然而在我们将该方法实际应用于C代码的模型检验时,仍有很多挑战需要面对,首先是该方法在处理规模较大的代码时,需要遍历验证的路径数量很大,可能存在路径爆炸的问题,因此需要更加高效的路径遍历方法;同时,当输入的代码中包含迭代次数较大的循环结构时,路径的长度可能很大,导致单次验证的难度提升,因此需要有效处理循环的方法和框架。为解决上述问题,同时将方法实际应用于C代码上的有界模型检验,本文主要做了如下工作:针对目前存在的路径爆炸的问题,本文提出了一种新型的路径遍历方法。该方法基于并行计算技术,通过并行验证多条路径加快验证,同时使用共享不可行路径池,同步反馈各路径验证结果以避免不必要的计算,从而提高整体的验证效率。针对目前无法有效处理迭代次数较大的循环结构的问题,本文提出了一种针对循环结构的集成处理框架。该框架利用循环总结技术和循环抽象技术,在验证之前对循环进行预处理,从而提高系统对循环结构的处理能力。为了将上述方法落实到实际C代码的有界模型检验上,同时为了评估本文工作的效果,我们按照优化后的算法和框架实现了一个面向C代码的有界模型验证工具BRICK,并添加了多种通用技术进行整体支持。我们为优化前后的BRICK与一些具有代表性的同类工具设计了实验并将结果进行对比,结果显示基于本文方案的BRICK有着良好的性能优势。
曹学琪[7](2020)在《在线评测系统的评分方式研究与改进》文中指出随着互联网的高速发展,一些传统的计算机类考试已经可以在网络上进行,基于互联网的在线编程考试的方式更是受到人们的追捧。如今,一些计算机类的考试都可以在网络上进行,比如全国的计算机二级考试、蓝桥杯竞赛、高校的编程类期末考试等。在计算机类的在线评测系统中,一般包含有各种不同的考题类型,包括填空题、选择题这样简单题型,也包括需要编写程序代码的主观题,编程类的考试系统被称为在线评测系统,英文:Online Judge System,简称OJ系统。OJ系统大多是基于B/S架构的程序,它运行在服务器上,当学生或者评测者使用OJ时,用户或者被评测者通过浏览器就可以进行编程类题目的评测,直接通过网页提交程序源代码,并不需要在本地安装IDE,也不需要进行繁琐的安装和配置。在哈工大等一些高校中,编程类的期末考试已经开始使用OJ系统,可见在不久的将来会有更多的高校将会采用编程类考试进行在线考试。相对与传统的纸质试卷方式进行编程类程序考试,使用在线评测系统不仅方便快捷,而且省时省力,为阅卷老师节省了很多的时间和精力,对于学生的成绩来说也有很好的区分度。可见,当今时代,越来越多的考试形式转移到了网上考试,OJ系统在我们的日常生活中扮演着越来越重要的角色。将来OJ系统也一定能够发展得功能更多,使用上更加便捷。以前的OJ系统仅支持C、Java等少数几种编程类语言,如今的OJ系统不断增加各种新的功能,Python、Java Script等新型热门编程类语言的功能也被被集成到OJ系统中。随着网络的发展,OJ的功能将会越来越多。随着OJ系统被人们普遍使用,一些OJ系统上的新型问题也不断被发现,不断被改进。如今OJ系统面临着评分过于死板的问题,对于一道编程类题目,系统对源码进行编译,结果只有正确和错误,而编程类题目又往往比较难,所以如果高校采用OJ进行期末考试,学生的成绩很难区分好坏,难以拉开不同编程能力学生成绩之间梯度。针对此问题,本文对传统的OJ系统评分方式进行研究,并尝试新的探索。对提交到OJ系统的代码进行分析,与参考答案的源码进行相似度比对,然后得出分数,有利于区分开每个人的编程能力。目前,不同文本的相似度的研究主要应用于自然语言处理(Natural Language Processing,简称NLP)中,目前国内对于程序的静态评分方向的研究较少,与国外的差距较大,本文对目前的OJ系统的静态评分方式进行研究,并使用自然语言中对文本相似度研究思路,尝试对程序源码进行分析,并设计算法,实现对OJ系统评测方式的进一步改进和优化。目前国内对于程序的静态评分处于起步阶段,本文主要针对C语言源码的静态评分方式的研究,为以后的其它编程类语言的评分提供了研究思路。
李盛[8](2020)在《分组密码专用描述语言及编译技术研究》文中研究说明可重构专用指令密码处理器具有面向密码运算的专用指令集和可重构专用运算单元,密码处理性能高、灵活性强,已成为密码算法的一种重要实现方式。但该类处理器指令集和体系结构复杂,代码编写和编译优化困难,影响了芯片应用,本文针对这一问题开展了研究,主要成果及创新点如下:1.提出了一种分组密码专用描述语言DSLBCA(Domain Specific Language for Block Cipher Algorithm)。针对通用编程语言难以直观描述分组密码算法的算子和结构的问题,采用领域专用语言建模的方法,从问题域和解答域的角度建立了分组密码算法加密过程特征模型、层次化特征模型和执行模型,定义了DSLBCA语言的数据类型、标识符、函数结构和程序控制结构,使密码应用者能够通过数学思维方式编写算法程序代码。2.设计了面向DSLBCA和可重构VLIW分组密码处理器RVBCP(Reconfigurable VLIW Block Cipher Processor)的编译基础设施。研究了RVBCP处理器指令集特点,结合分组密码专用描述语言的语言规则,提出了相应的编译基础设施,设计了词法分析器、语法分析器、语义分析器,实现了DSLBCA程序代码向RVBCP汇编指令集的符号编译。3.提出了面向可重构多引擎密码So C的反馈式编译器结构。研究了基于RVBCP的多引擎密码So C(System on Chip)的工作流程,提出了反馈式编译器结构,设计了基于平均代码行数的循环展开因子算法UFACLA(Unrolling Factor Based on Average Code Line Amount),在编译器前端实现了DSLBCA应用程序源代码在So C下的并行分配;并对展开后的代码进行标量替换,通过降低访存时间提高了分组密码算法的执行效率。4.提出了DSLBCA程序代码在RVBCP中的算子自动映射方案。建立分组密码算子调度参数模型,量化描述算子结点的调度状态信息;建立RVBCP的计算资源与寄存器资源参数模型,量化计算运行时计算资源与寄存器资源的消耗;基于贪婪策略、列表调度与线性扫描算法思想,设计了面向多发射可重构分组密码算法指令集处理器的并行资源分配算法,实现了分组密码算子在RVBCP上的自动并行映射。5.提出了RVBCP处理器低功耗指令调度方案。分析VLIW(Very Long Instruction Word)指令级功耗模型和RVBCP指令字内部指令排序与动态功耗变化的关系,对调整指令字之间汉明距离的方案进行了数学描述和讨论,将该低功耗指令调度问题归纳为广义旅行商问题,提出了一种基于禁忌搜索的改进广义遗传算法求解广义旅行商问题,实现了低功耗指令调度。
姚化吉[9](2020)在《基于64位Linux系统的MSVL编译器设计开发与测试》文中研究表明随着软件系统日益增长的复杂性以及应用的广泛性,其正确性、可靠性不可避免地成为了当今软件系统首当其冲需要解决的问题。而对于庞大、复杂的软件系统来说,无法依靠传统的测试方法来保证其所需要的可靠性、完备性。取而代之的是形式化验证,它是通过数学逻辑来对软件系统进行严密地分析、推导和验证,成为了当下复杂软件系统可信保障的一个重要途径。基于时序逻辑的系统验证是形式化验证的一个重要方法,MSVL正是一种时序逻辑程序设计语言,其适用于软、硬件系统的仿真、建模以及验证。实现一门语言通常有两种方式:编译器和解释器,但其性能是存在差异的。众所周知,编译器在无论是在运行速度还是内存占用方面的性能都比解释器更加优秀,所以对于MSVL语言来说,如何设计并开发出一款性能优越的编译器显得尤为重要。本文的主要工作是在64位Linux平台下,基于LLVM框架,从词法分析、语法分析、语义分析到IR代码产生、优化以及目标代码的生成,设计开发出高效通用的MSVL编译器。在编译器测试阶段,为了得到大量的测试用例,需要一些工具来将其它语言中的优秀算法快速地转换为MSVL程序。当前MSVL生态系统已存在将VHDL转为MSVL的V2MSVL工具、Verilog转为MSVL的Veri2MSVL工具以及C语言转为MSVL的C2MSVL工具。其中C2MSVL工具也可以用于部分C++程序的转换,但无法处理涉及C++面向对象部分的程序。针对此缺陷,我们使用Shell语言开发了一个转换工具,主要用来以C++面向对象部分为核心,进行C++到MSVL程序的转换。
马骋原[10](2020)在《基于智能合约的领域特定语言的设计与实现》文中研究说明智能合约是在区块链和加密货币技术基础上发展出的在可信环境下管理数字资产、执行交易逻辑的协议。智能合约是一个跨学科的概念,创建智能合约需要将参与方协商达成一致的结果编译成计算机可执行代码。在这一过程中,需要考虑法律和金融等专家与程序员沟通问题、合约代码与法律对接的问题、代码逻辑安全性问题及智能合约语言表达能力等问题。因此为智能合约设计表达能力强、抽象层次高的规约语言,并构建普适性的系统执行模型可以更好的推广智能合约。目前智能合约编写过程中各领域专家对合约进行共识的达成与问题领域模型的建立没有形成普适的解决方案。针对这一问题,本课题开展了对智能合约从建模、设计、实现到应用的执行流程分析,引入领域特定语言DSL(Domain-Specific Language/DSL)优化创建智能合约时各领域专家对合同语义的规范协作这一过程。并通过对DSL的设计与实现,完成智能合约运行流程中合约层规约语言与执行层机器语言之间的映射关系。最后,通过设计面向应用场景的原型系统,论证了使用领域特定语言DSL描述智能合约的可编程性、可执行性、可信运行环境与可扩展性。首先,本课题对智能合约的执行逻辑、编程语言和调用方法进行分析,对智能合约系统执行流程建模,论证了使用DSL对智能合约进行快速定义和编写的可行性分析。然后,本课题提出了 DSL设计思想,通过约束条件的定义来使得DSL有更好的可读性和更高的抽象层次。并使用编译技术的方法和Antlr工具,完成对领域特定语言DSL解释器的实现,达到了 DSL在智能合约模型中可编程的目的。最后,课题使用Fabric作为智能合约的底层区块链运行环境,完成了整个原型系统的实现,并对其进行测试。通过实验完成了 DSL描述的合约文本与Fabric链码函数之间的映射,验证了设计的领域特定语言DSL的可执行性。
二、编译系统中间代码的一种抽象表示(论文开题报告)
(1)论文研究背景及目的
此处内容要求:
首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。
写法范例:
本文主要提出一款精简64位RISC处理器存储管理单元结构并详细分析其设计过程。在该MMU结构中,TLB采用叁个分离的TLB,TLB采用基于内容查找的相联存储器并行查找,支持粗粒度为64KB和细粒度为4KB两种页面大小,采用多级分层页表结构映射地址空间,并详细论述了四级页表转换过程,TLB结构组织等。该MMU结构将作为该处理器存储系统实现的一个重要组成部分。
(2)本文研究方法
调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。
观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。
实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。
文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。
实证研究法:依据现有的科学理论和实践的需要提出设计。
定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。
定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。
跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。
功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。
模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。
三、编译系统中间代码的一种抽象表示(论文提纲范文)
(1)一种终端智能设备低代码编程的实现(论文提纲范文)
摘要 |
ABSTRACT |
第1章 绪论 |
1.1 研究背景与意义 |
1.2 国内外研究现状 |
1.3 课题章节安排 |
第2章 低代码编程的机制设计 |
2.1 概念组件 |
2.1.1 概念组件的定义 |
2.1.2 设备资源类型 |
2.1.3 概念组件结构设计 |
2.2 新型指令操作集 |
2.2.1 运算操作 |
2.2.2 条件跳转操作 |
2.2.3 控制操作 |
2.2.4 时序操作 |
2.2.5 数据存取操作 |
2.3 策略文法 |
2.4 本章小结 |
第3章 低代码编程的总体设计 |
3.1 系统技术架构设计 |
3.1.1 系统物理架构设计 |
3.1.2 系统逻辑架构设计 |
3.2 系统架构各层详解 |
3.2.1 设备驱动层 |
3.2.2 人机交互层 |
3.2.3 网络通讯层 |
3.2.4 解析编译层 |
3.2.5 任务执行层 |
3.3 本章小结 |
第4章 低代码编程的功能模块设计 |
4.1 功能模块整体设计 |
4.2 网络通信模块设计 |
4.2.1 通信模型选择 |
4.2.2 网络模块设计 |
4.3 解释编译模块设计 |
4.3.1 词法分析器 |
4.3.2 语法分析器 |
4.3.3 代码生成器 |
4.4 任务执行模块设计 |
4.4.1 任务管理类 |
4.4.2 任务执行器 |
4.5 本章小结 |
第5章 低代码编程的系统功能测试 |
5.1 测试环境 |
5.2 测试准备 |
5.3 功能测试 |
5.4 本章小结 |
第6章 总结与展望 |
6.1 论文总结 |
6.2 不足与展望 |
参考文献 |
致谢 |
学位论文评阅及答辩情况表 |
(2)基于图神经网络的指令选择研究(论文提纲范文)
摘要 |
ABSTRACT |
第1章 绪论 |
1.1 研究背景与研究意义 |
1.1.1 研究背景 |
1.1.2 编译过程 |
1.1.3 研究意义 |
1.2 国内外研究概况与发展趋势 |
1.3 论文主要工作 |
1.4 论文组织结构 |
第2章 BWDSP平台与指令选择的相关技术介绍 |
2.1 BWDSP平台简介 |
2.2 传统指令选择过程 |
2.2.1 指令选择的简要过程 |
2.2.2 指令选择策略 |
2.3 本文指令选择的整体框架设计 |
2.3.1 基于图神经网络的模式匹配解决策略 |
2.3.2 基于元启发式算法的模式选择解决策略 |
2.4 本章小结 |
第3章 数据集的准备 |
3.1 CDFG构造流程 |
3.2 建模源程序IR的CDFG |
3.2.1 捕获数据流 |
3.2.2 捕获控制流 |
3.2.3 组合数据控制流图 |
3.3 构建BWDSP指令集为指令图集 |
3.3.1 BWDSP指令集介绍 |
3.3.2 建模BWDSP指令集 |
3.4 数据控制流图的补充说明 |
3.5 本章小结 |
第4章 基于图神经网络解决模式匹配问题 |
4.1 模式匹配转换为子图同构问题 |
4.2 子图同构的解决方法 |
4.3 图神经网络——GINSA的设计与实现 |
4.3.1 图神经网络——GINSA的设计 |
4.3.2 获取图的拉普拉斯矩阵 |
4.3.3 图神经网络——GINSA的算法 |
4.4 本章小结 |
第5章 基于元启发式算法解决模式选择问题 |
5.1 定义模式选择问题 |
5.2 将模式选择问题转换为极大团问题 |
5.3 元启发式算法解决极大团问题 |
5.3.1 遗传算法 |
5.3.2 模拟退火算法 |
5.4 本章小结 |
第6章 实验步骤及过程 |
6.1 实验前提与准备 |
6.2 实验结果与分析 |
6.2.1 GINSA的基本测试实验与分析 |
6.2.2 GINSA在指令子数据集上的实验与分析 |
6.2.3 元启发式算法实验与分析 |
6.3 本章小结 |
第7章 总结 |
7.1 本文工作总结 |
7.2 本文的贡献及创新点 |
7.3 未来的工作 |
参考文献 |
致谢 |
在读期间发表的学术论文与取得的研究成果 |
(3)面向安卓平台的应用兼容性问题检测技术研究(论文提纲范文)
摘要 |
abstract |
第1章 绪论 |
1.1 研究背景及意义 |
1.2 本文主要研究内容 |
1.3 本文的组织结构 |
第2章 相关综述与国内外研究现状 |
2.1 相关综述 |
2.1.1 安卓系统 |
2.1.2 安卓应用 |
2.1.3 应用的兼容性问题 |
2.2 国内外相关研究 |
2.2.1 静态分析 |
2.2.2 动态分析 |
2.2.3 动静态混合分析 |
2.2.4 兼容性问题分析 |
第3章 基于多模态的兼容性疑似应用识别方法 |
3.1 引言 |
3.1.1 研究背景和问题 |
3.1.2 研究方案和挑战 |
3.2 预备知识 |
3.2.1 多模态分析 |
3.2.2 APK文件结构 |
3.2.3 假设检验 |
3.3 方案设计 |
3.3.1 模态信息选择 |
3.3.2 模态信息提取 |
3.3.3 模态信息检验 |
3.4 实验评估 |
3.4.1 数据集 |
3.4.2 对模态信息的评估 |
3.4.3 对目标应用识别的评估 |
3.5 方案讨论 |
3.5.1 相关工作对比 |
3.5.2 效度威胁 |
3.5.3 局限性 |
3.6 本章小结 |
第4章 基于分布偏差的兼容性缺陷API智能识别方法 |
4.1 引言 |
4.1.1 研究背景和问题 |
4.1.2 研究方案和挑战 |
4.2 研究动机和预备知识 |
4.2.1 动机 |
4.2.2 安卓API |
4.2.3 关键词提取 |
4.3 方案设计 |
4.3.1 方案概述 |
4.3.2 候选集构建 |
4.3.3 目标API识别 |
4.4 实验评估 |
4.4.1 实验设计 |
4.4.2 总体性能 |
4.4.3 候选集构建 |
4.5 方案讨论 |
4.5.1 效度威胁 |
4.5.2 相关工作对比 |
4.5.3 局限性 |
4.6 本章小结 |
第5章 针对安卓应用兼容性缺陷的自动代码修复方案 |
5.1 引言 |
5.1.1 研究背景和问题 |
5.1.2 研究方案和挑战 |
5.2 预备知识 |
5.2.1 插桩技术 |
5.2.2 静态分析技术 |
5.3 方案设计 |
5.3.1 方案概述 |
5.3.2 兼容性缺陷API收集 |
5.3.3 兼容性问题定位 |
5.3.4 兼容性问题代码修复 |
5.3.5 应用打包 |
5.4 实验评估 |
5.4.1 实验设计 |
5.4.2 总体性能 |
5.4.3 兼容性缺陷API二元组构建 |
5.5 方案讨论 |
5.5.1 应用评估的规模 |
5.5.2 静态分析的局限性 |
5.5.3 对应用功能的潜在影响 |
5.6 本章小结 |
第6章 文章总结 |
6.1 工作总结 |
6.2 未来展望 |
参考文献 |
致谢 |
在读期间发表的学术论文与取得的研究成果 |
(4)基于标记的跨平台并行编程框架设计与实现(论文提纲范文)
摘要 |
ABSTRACT |
第1章 绪论 |
1.1 研究背景及意义 |
1.2 研究现状 |
1.2.1 自动并行技术及工具 |
1.2.2 并行编程模型及框架 |
1.2.3 基于标记的并行框架 |
1.2.4 面向应用编程框架 |
1.3 本文研究内容 |
1.3.1 并行编程框架结构设计 |
1.3.2 并行机制与标记语言设计 |
1.3.3 辅助支撑系统设计与实现 |
1.4 论文组织 |
第2章 相关并行编程模型和框架 |
2.1 PVTOL |
2.2 OpenMM |
2.3 本章小结 |
第3章 并行编程框架总体设计 |
3.1 任务模型设计 |
3.1.1 信号处理问题 |
3.1.2 任务模型抽象和建立 |
3.2 框架总体设计 |
3.2.1 框架层次模型 |
3.2.2 框架处理流程 |
3.2.3 框架结构设计 |
3.3 标记系统设计 |
3.3.1 标记语言设计 |
3.3.2 标记语言结构 |
3.3.3 标记语言分类 |
3.4 基于标记的代码解析 |
3.4.1 代码解析算法设计 |
3.4.2 数据划分和分发阶段 |
3.4.3 数据计算阶段 |
3.4.4 数据收集和归约阶段 |
3.5 本章小结 |
第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 本章小结 |
第5章 总结 |
5.1 本文工作 |
5.2 本文贡献与创新之处 |
5.3 进一步工作 |
参考文献 |
致谢 |
在读期间发表的学术论文与取得的研究成果 |
攻读学位期间参加的科研项目 |
(5)Java并发程序中数据竞争的静态检测工具的设计与实现(论文提纲范文)
摘要 |
Abstract |
第一章 绪论 |
1.1 课题背景 |
1.2 研究背景与意义 |
1.3 国内外研究现状 |
1.3.1 国外研究现状 |
1.3.2 国内研究现状 |
1.4 论文的主要工作 |
1.5 本文的组织结构 |
第二章 相关技术与理论 |
2.1 多线程并发技术 |
2.1.1 多线程概念 |
2.1.2 多线程实现方式 |
2.1.3 Java多线程及内存模型 |
2.2 数据竞争 |
2.3 静态检测技术及特点 |
2.4 静态分析方法 |
2.4.1 基本分析方法 |
2.4.2 形式化分析方法 |
2.4.3 其他分析方法 |
2.5 本章小结 |
第三章 Java并发程序数据竞争静态检测方法 |
3.1 静态检测方法设计 |
3.2 中间代码转换 |
3.3 程序建模 |
3.3.1 控制流图构建 |
3.3.2 函数调用图构建 |
3.4 访问事件生成 |
3.5 并发性分析 |
3.6 别名分析 |
3.7 本章小结 |
第四章 工具设计与实现 |
4.1 工具总体架构 |
4.2 程序建模模块 |
4.3 访问事件生成模块 |
4.4 竞争判定模块 |
4.5 检测报告生成模块 |
4.6 工具执行 |
4.7 本章小结 |
第五章 实验及分析 |
5.1 实验环境与实验对象 |
5.2 实验内容 |
5.2.1 度量标准 |
5.2.2 实验结果及分析 |
5.3 本章小结 |
第六章 总结与展望 |
致谢 |
参考文献 |
(6)面向路径代码有界模型检验的系统优化技术研究(论文提纲范文)
中文摘要 |
英文摘要 |
第一章 绪论 |
1.1 研究背景 |
1.1.1 复杂计算机系统 |
1.1.2 软件测试 |
1.1.3 形式化方法 |
1.2 软件模型检验研究现状 |
1.2.1 模型抽象 |
1.2.2 有界模型检验 |
1.2.3 归纳证明 |
1.3 本文工作 |
1.4 本文组织结构 |
第二章 面向路径的代码有界模型检验 |
2.1 软件模型检验 |
2.2 SAT技术和SMT技术 |
2.3 LP技术和IIS技术 |
2.4 SAT-LP-IIS算法 |
2.5 并行计算 |
2.6 本章小节 |
第三章 基于并行的多路径有界模型检验方法 |
3.1 前期工作及问题分析 |
3.1.1 前期工作 |
3.1.2 问题分析 |
3.2 基于面向路径的并行验证过程 |
3.3 基于共享IIS的面向路径并行验证加速 |
3.4 基于并行的多路径有界模型验证框架 |
3.5 本章小节 |
第四章 面向循环结构的集成处理框架 |
4.1 问题分析 |
4.2 循环总结技术的集成 |
4.2.1 循环总结技术 |
4.2.2 集成循环总结技术的处理框架 |
4.3 循环抽象技术的集成 |
4.3.1 循环抽象技术 |
4.3.2 集成循环抽象技术的处理框架 |
4.4 本章小节 |
第五章 系统整体实现与实验评估 |
5.1 通用技术支持 |
5.1.1 程序切片 |
5.1.2 编译优化适配 |
5.2 工具实现 |
5.2.1 工具架构 |
5.2.2 集成第三方工具介绍 |
5.2.3 工具命令 |
5.3 评估实验 |
5.3.1 实验设置 |
5.3.2 并行加速对比实验 |
5.3.3 循环特殊问题对比实验 |
5.3.4 整体运行对比实验 |
5.4 本章小节 |
第六章 总结与展望 |
6.1 本文的主要工作 |
6.2 未来的展望 |
致谢 |
参考文献 |
简历与科研成果 |
(7)在线评测系统的评分方式研究与改进(论文提纲范文)
摘要 |
ABSTRACT |
第一章 绪论 |
1.1 研究意义 |
1.2 国内外研究现状 |
1.3 主要研究内容 |
1.4 论文结构 |
第二章 动态评分方式研究 |
2.1 动态评测机工作方式 |
2.1.1 OJ系统评测流程 |
2.1.2 评测机的概念 |
2.1.3 Tomcat与 HTTP Server配置 |
2.2 数据交互 |
2.2.1 Form表单提交 |
2.2.2 Thymeleaf引擎数据交互 |
2.3 脚本设计 |
2.3.1 编译过程 |
2.3.2 Bashshell脚本设计 |
2.4 本章小结 |
第三章 静态评分方式研究 |
3.1 源码的相似度 |
3.1.1 源代码的相似度 |
3.1.2 C语言源码结构 |
3.2 静态评分常用算法 |
3.2.1 KNN近邻算法 |
3.2.2 编辑距离算法 |
3.2.3 AST语法树对比法 |
3.2.4 最长子序列算法 |
3.3 静态评分过程 |
3.3.1 源码的预处理 |
3.3.2 LCS简介 |
3.3.3 动态规划简介 |
3.3.4 动态规划求解LCS问题 |
3.4 本章小结 |
第四章 评测方式的改进 |
4.1 源码的处理 |
4.1.1 源码的注释去除注释和代码的补全 |
4.1.2 源码的标准化处理 |
4.2 评分模块设计 |
4.2.1 评测机工作流程 |
4.2.2 评测机设计 |
4.2.3 面向对象的系统设计 |
4.3 示例代码的测试 |
4.3.1 源代码的中间代码 |
4.3.2 去除冗余信息 |
4.3.3 去除标点符号 |
4.4 功能测试 |
4.4.1 程序运行测试 |
4.4.2 功能测试 |
4.4.3 结果分析 |
4.5 本章小结 |
第五章 总结与展望 |
5.1 总结 |
5.2 展望 |
参考文献 |
攻读学位期间发表的学术论文目录 |
致谢 |
(8)分组密码专用描述语言及编译技术研究(论文提纲范文)
摘要 |
Abstract |
第一章 绪论 |
1.1 研究背景 |
1.2 国内外研究现状 |
1.2.1 密码算法编程语言 |
1.2.2 处理器的编译技术 |
1.2.3 处理器的编译优化技术 |
1.3 本文主要研究工作 |
1.3.1 研究内容 |
1.3.2 论文结构 |
第二章 理论研究基础 |
2.1 领域专用语言设计概念 |
2.2 分组密码算法特点 |
2.2.1 分组密码算法数学模型 |
2.2.2 分组密码算法的网络结构 |
2.3 可重构分组密码指令集处理器 |
2.3.1 RVBCP体系结构及功能单元 |
2.3.2 RVBCP指令系统 |
2.4 本章小结 |
第三章 分组密码专用描述语言及编译基础设施研究 |
3.1 引言 |
3.2 分组密码专用描述语言建模 |
3.2.1 问题域分析 |
3.2.2 解答域分析 |
3.3 分组密码专用描述语言定义及实例 |
3.3.1 变量类型与数据表示 |
3.3.2 标识符与关键字 |
3.3.3 函数与程序控制结构 |
3.3.4 分组密码描述语言的格式 |
3.4 面向分组密码专用描述语言的编译器基础设施设计 |
3.4.1 词法分析器设计 |
3.4.2 语法分析器设计 |
3.4.3 语义分析器设计 |
3.5 本章小结 |
第四章 编译器结构设计及前端编译优化研究 |
4.1 引言 |
4.2 优化编译结构设计 |
4.2.1 分组密码异构SoC结构及工作流程 |
4.2.2 编译器结构设计原则 |
4.2.3 反馈式编译器结构设计 |
4.3 反馈式编译器前端优化算法研究 |
4.3.1 基于平均代码行数的循环展开算法研究 |
4.3.2 标量替代算法研究 |
4.4 实验及分析 |
4.4.1 实验验证 |
4.4.2 实验结果分析 |
4.5 本章小结 |
第五章 可重构分组密码指令集处理器的自动映射研究 |
5.1 引言 |
5.2 分析与参数建模 |
5.2.1 分组密码算子调度与映射参数模型 |
5.2.2 可重构分组密码指令集处理器资源模型 |
5.2.3 资源消耗与资源约束关系分析 |
5.3 可重构指令集处理器自动映射算法 |
5.3.1 初始化调度 |
5.3.2 资源分配与结点调度调整 |
5.4 实验及分析 |
5.4.1 实验设计 |
5.4.2 实验结果分析 |
5.5 本章小结 |
第六章 面向VLIW结构密码处理器的低功耗指令调度研究 |
6.1 引言 |
6.2 VLIW结构的指令级低功耗分析 |
6.2.1 密码处理器功耗的编译调优方法分析 |
6.2.2 低功耗调度原理分析及低功耗指令调度问题 |
6.3 面向低功耗指令调度问题求解的改进广义遗传算法 |
6.3.1 遗传算法、广义遗传算法与禁忌搜索算法 |
6.3.2 基于禁忌搜索的改进广义遗传算法设计 |
6.4 实验及分析 |
6.4.1 IGGABTS算法仿真实验 |
6.4.2 平均功耗测试 |
6.5 本章小结 |
第七章 总结与展望 |
7.1 研究总结 |
7.2 创新点总结 |
7.3 展望 |
致谢 |
参考文献 |
(9)基于64位Linux系统的MSVL编译器设计开发与测试(论文提纲范文)
摘要 |
ABSTRACT |
缩略语对照表 |
第一章 绪论 |
1.1 研究背景 |
1.2 研究现状 |
1.2.1 形式化验证 |
1.2.2 时序逻辑 |
1.2.3 时序逻辑程序设计语言 |
1.3 研究内容和组织结构 |
第二章 理论基础 |
2.1 编译器相关理论 |
2.1.2 词法分析 |
2.1.3 语法分析 |
2.1.4 语义分析和中间代码生成 |
2.1.5 编译器优化 |
2.1.6 目标代码生成 |
2.2 LLVM项目 |
2.2.1 LLVM优势 |
2.2.2 Clang和LLVM的关系 |
2.2.3 LLVM编译工具链编译流程 |
2.2.4 IR指令系统 |
2.3 MSVL语法 |
2.4 本章小结 |
第三章 64位MSVL编译器模块设计 |
3.1 编译器架构 |
3.2 词法分析模块 |
3.3 语法分析模块 |
3.3.1 语法分析工具Bison |
3.3.2 语法分析流程 |
3.4 语义分析模块 |
3.4.1 静态语义检查 |
3.4.2 语法树的转换 |
3.5 中间代码(IR)生成 |
3.6 IR优化 |
3.7 后端模块 |
3.8 本章小结 |
第四章 MSVL测试案例转换工具 |
4.1 工具架构 |
4.2 工具实现细节 |
4.2.1 变量声明、赋值模块 |
4.2.2 函数的排除 |
4.2.3 函数定义模块 |
4.2.4 For循环模块 |
4.2.5 构造方法创建对象 |
4.2.6 If-else模块 |
4.2.7 Switch-case模块 |
4.3 转换实例 |
4.3.1 字符串类String转换 |
4.3.2 链表类List转换 |
4.4 本章小结 |
第五章 64位MSVL编译器测试 |
5.1 串行测试 |
5.1.1 小球称重问题 |
5.1.2 河内之塔算法 |
5.2 并行测试 |
5.2.1 Dekker算法 |
5.2.2 哲学家就餐问题 |
5.3 多路径执行测试 |
5.3.1 四阶幻方 |
5.3.2 八阶幻方 |
5.4 本章小结 |
第六章 总结与展望 |
6.1 总结 |
6.2 展望 |
参考文献 |
致谢 |
个人简介 |
(10)基于智能合约的领域特定语言的设计与实现(论文提纲范文)
摘要 |
ABSTRACT |
缩略词 |
第一章 绪论 |
1.1 研究背景与意义 |
1.2 国内外研究现状 |
1.2.1 区块链的应用 |
1.2.2 智能合约与DSL国内外研究现状 |
1.3 研究目标与研究内容 |
1.3.1 研究目标 |
1.3.2 研究内容 |
1.4 论文结构 |
第二章 相关技术分析 |
2.1 区块链关键技术 |
2.1.1 区块链数据结构 |
2.1.2 区块链的网络特征 |
2.1.3 Merkle树 |
2.1.4 区块链网络通信 |
2.1.5 区块链共识算法 |
2.1.6 区块链使用的密码学技术 |
2.2 智能合约关键技术 |
2.2.1 智能合约特性 |
2.2.2 智能合约编程方法 |
2.3 编译技术实现领域特定语言 |
2.3.1 编译技术概述 |
2.3.2 领域特定语言的类型 |
2.3.3 领域特定语言的实现方法 |
2.4 本章小结 |
第三章 智能合约系统执行模型研究 |
3.1 智能合约系统框架 |
3.2 区块链底层服务接口 |
3.4 智能合约在区块链中的系统执行流程 |
3.5 本章小结 |
第四章 领域特定语言DSL的设计与实现 |
4.1 领域特定语言的DSL设计思想 |
4.2 领域特定语言的DSL的构造实现 |
4.2.1 Antlr基础架构 |
4.2.2 词法分析与语法分析 |
4.2.3 中间代码生成 |
4.2.4 代码解释器 |
4.3 领域特定语言DSL的交互性 |
4.4 领域特定语言DSL的领域特定性 |
4.5 本章小结 |
第五章 装备采购管理原型系统设计与实现 |
5.1 智能合约应用场景 |
5.2 装备采购管理系统架构 |
5.3 存储数据库 |
5.4 链码处理函数 |
5.5 测试与分析 |
5.5.1 功能测试及测试用例 |
5.5.2 性能测试 |
5.6 本章小结 |
第六章 总结与展望 |
6.1 总结 |
6.2 展望 |
参考文献 |
致谢 |
在学期间发表的学术论文及取得的研究成果 |
四、编译系统中间代码的一种抽象表示(论文参考文献)
- [1]一种终端智能设备低代码编程的实现[D]. 严希锐. 山东大学, 2021(12)
- [2]基于图神经网络的指令选择研究[D]. 侯璇. 中国科学技术大学, 2021(08)
- [3]面向安卓平台的应用兼容性问题检测技术研究[D]. 徐棽. 中国科学技术大学, 2021(06)
- [4]基于标记的跨平台并行编程框架设计与实现[D]. 唐佩佳. 中国科学技术大学, 2020(02)
- [5]Java并发程序中数据竞争的静态检测工具的设计与实现[D]. 操旺根. 东南大学, 2020(01)
- [6]面向路径代码有界模型检验的系统优化技术研究[D]. 闾乐成. 南京大学, 2020(02)
- [7]在线评测系统的评分方式研究与改进[D]. 曹学琪. 西藏大学, 2020(02)
- [8]分组密码专用描述语言及编译技术研究[D]. 李盛. 战略支援部队信息工程大学, 2020(03)
- [9]基于64位Linux系统的MSVL编译器设计开发与测试[D]. 姚化吉. 西安电子科技大学, 2020(05)
- [10]基于智能合约的领域特定语言的设计与实现[D]. 马骋原. 中国电子科技集团公司电子科学研究院, 2020(03)