当前位置: 首页 > 专利查询>微软公司专利>正文

软件开发基础架构制造技术

技术编号:2859935 阅读:248 留言:0更新日期:2012-04-11 18:40
提供了一种软件开发体系结构,用于结构各类的软件开发工具。能够通过将指定了专用于一组软件开发场景的功能的规范集成到与软件开发场景无关的框架里来创建软件开发工具。然后能够编译集成的规范,以创建软件开发工具。替换地,也可以在不访问源代码的情况下,在运行时实现集成。所述体系结构能够使用下列内容的任何组合:软件场景独立的中间表示格式,能够支持多个程序设计语言专用异常处理模型的一个或多个异常处理模型,能够表示多个源语言的类型表示的类型系统,以及能够生成以多个执行体系结构为目标的代码的代码生成器。

【技术实现步骤摘要】


涉及软件开发,具体来讲涉及一种用于帮助生成软件开发工具的体系结构。背景可使用多种程序设计语言,以便在编程时为程序员提供每种语言所特有的有益之处。类似地,可以使用多种处理器,以便在执行特定工作时提供每种处理器所特有的有益之处。例如,嵌入式处理机特别适合于处理电子设备内部的意义明确的任务,而通用处理机诸如IntelPentium处理器更加灵活,并且能够处理复杂任务。此外,还存在为帮助程序员解决对于软件可靠性、安全性和高性能的逐渐增长的需求而创建的各种工具类型。因此,计算环境、结构配置和设备器件方面的多样性正在增加。因此,软件开发者面临在大量眼花缭乱的不同软件开发场景中进行适应和工作。解决这种多样性的需求使得已经极其复杂的积木式软件开发工具的领域变得更加复杂。这样的软件开发工具可能包括各种组件,诸如编译程序,反编译程序,解码器,编码器,指令选择组件,以及指令认可组件。往往,这样的组件已经叠加覆盖了要求,并且组件本身可能在超过一个开发工具中出现(例如,在编译器和调试器中)。尽管普遍需要类似的组件功能,但是难以开发出共享设计和实现方式的组件,特别是当涉及大量的程序设计语言或者其他程序表示时。往往,每一工具的每一个组件具有它自己的实现方式,这导致大量冗余的工作和重复的代码。另外,在体系结构之间、甚至在相同的源库内部几乎不具有一致性。因此,对一个组件的代码作出任何改进对于一种特定实现方式都是有用的,但是该改进不会自动地扩展至实现同一功能的其他工具或者体系结构。最终,在解决一特定软件开发场景方面付出的努力通常必须被重复进行,以解决不同的场景。专利技术概述提供了一种软件开发体系结构(SDA),用于结构软件开发工具的各类组件。这些组件可被用于以一种或多种源语言编写的程序或者诸如二进制可执行文件之类的计算机可读输入。然后这些组件可被合并,以创建软件开发工具。所述SDA包括各种方面。所述各种方面可被单独地和独立地使用,或者所述各种方面可以不同组合和子组合的方式来使用。在一方面,SDA使用能够表示多种程序设计语言及其他诸如二进制可执行文件的计算机可读程序格式的中间表示,一个或多个能够支持多种程序设计语言或者其他计算机可读程序格式的异常处理模型,以及能够表示多种源语言或者其他计算机可读程序格式的类型表示的类型系统。此外,所述中间表示能够表示可为多种执行体系结构执行的二进制码。因此,使用这种中间表示编写的组件可以被应用于以各种程序设计语言编写的程序、诸如二进制可执行文件或者目标文件之类的程序的计算机可读表示、以及用于特定目标结构的程序。这通过允许共享组件降低了开发软件工具的成本。它有助于改进对由不同种类的组件所组成的程序的分析和优化。组件能够包括数据流分析,控制流分析,程序转换,数据表示优化,寄存器分配程序,以及指令调度程序。在一个方面中,提供了一种方法,用于通过将用于实现专用于软件开发场景的功能的规格集成到与软件开发场景无关的体系里,来创建软件开发工具的组件。这样的软件开发场景可能涉及程序设计语言,目标执行体系结构,中间表示级,等等。在又一个方面中,提供了计算机可执行软件,用于产生由中间表示和共享组件的扩展版本所组成的软件开发工具。所述软件接受对于多种描述目标软件开发工具的软件的多种配置之一的选择;能够将专用于所述目标软件开发工具的数据合并到中间表示里;并且能够产生包括符合所述配置和数据的目标软件开发工具的组件。以这种方式,组件和中间表示能够被扩展到在新的和未预见到的情况中使用,例如对于现有工具的新要求、新颖类型的工具、新的或者改进的程序设计语言以及新的计算机体系结构。这些及其他方面将根据以下参照附图所作出的详细说明而变得更加清楚。附图说明图1示出用于结构各类软件开发工具的SDA的方框图。图2(a)是使用SDA创建软件开发工具的方法的流程图。图2(b)示出使用SDA创建软件开发工具的方法的另一个流程图。图3是用于使用SDA创建软件开发工具的组件的系统的高级方框图。图4示出用于使用诸如图3中所示出的系统创建的三个目标执行体系结构中每一个的编译器、调试器和优化器的框图。图5示出在使用SDA所创建的编译器中的示例性的编译过程的方框图。图6(a)-(d)贯穿了从在源中读取、到高级的与机器无关的IR、到低级的与机器有关的IR的IR转换。图7是用于在编译的各阶段对IR进行类型校验的编译器系统的一个实施例的方框图。图8是一种供IR使用的类型检验器的方框图。图9图示出用于实现IR中的统一异常处理的系统。图10A图示出使用IL阅读程序产生异常处理结构的中间表示的统一集合的方法。图10B示出用于根据软件的统一IR生成可执行的方法。图11是一种用于在以多个IL表示的形式表达的多个源语言内部产生异常处理结构的简单的和统一的IR的系统的方框图。图12是用于代码生成的系统的方框图。图13是一种以软件实现的用于代码生成的方法的实施例的流程图。图14A描述了一种用于扩展核心类定义以便通过扩展核心框架来构建工具的全过程。图14B描述了用于通过使用与软件场景有关的扩展来扩展SDA核心框架以便构建软件开发工具的全过程。图15A图示出一种用来将扩展添加到核心编译器框架以便扩展它的方法。图15B图示出一种用来将核心编译器框架编译为与扩展独立的文件的方法。图16图示出一种用于在编译时间之前静态地扩展与核心框架程序相关的类的方法。图17图示出用于实现图16中的过程的示例性系统。图18图示出用于通过在运行时将扩展链接至适当的核心类来扩展可扩展核心框架软件程序的核心类定义的方法。图19图示出用于实现图18中的过程的示例性系统。图20是用于可交付使用的计算机软件的系统的方框图。图21是示出图20中所描述的可执行软件的具体范例的方框图。图22示出可交付使用的计算机软件的另一个实施例。图23示出用于修改先有软件开发工具的可交付使用的计算机软件。图24图示出根据SDA创建相互兼容的软件工具。图25图示出作为SDA的实施例的操作环境使用的计算机系统的范例。详细说明提供了一种SDA,用于结构用于各类软件开发工具的组件、并且连接这些组件以形成工具。该SDA能够结构各种软件开发工具,所述软件开发工具可以采用任何数目的程序设计语言作为用于任何数目的目标执行体系结构的输入和输出代码。示例性的目标执行体系结构此处所述的目标执行体系结构能够包括各种硬件机器或者虚拟计算机中的任何一种。目标执行体系结构能够包括用于执行代码的任何环境。这样的目标执行体系结构能够包括Intelx86、AMD、IPF、ARM和MIPS体系结构,以及其他体系结构,包括将来实现的那些体系结构。Intelx86体系结构包括、但是不局限于可以从Intel公司获得的基于Intelx86体系结构的任何处理器,诸如80×86,80×88,Intel186,Intel286,Intel386,Intel486,和Pentium处理器。AMD体系结构包括、但是不局限于可以从Advanced MicroDevices(AMD)公司获得的AMD64和AMD32体系结构。IPF(Itanium处理器系列)体系结构包括、但是不局限于可以从Intel公司获得的IA64体系结构。ARM体系结构包括可以从ARM有限公司本文档来自技高网...

【技术保护点】
具有用于实现软件开发体系结构的计算机可执行指令的一个或多个计算机可读介质,其特征在于,该软件开发体系结构包括:一软件开发场景不相关的中间表示格式;一个或多个异常处理模型,用于支持多个程序设计语言专用异常处理模型;一类型系统,用于表示多个源语言的类型表示;以及一代码生成器,用于生成以多个执行体系结构为目标的代码。

【技术特征摘要】
US 2003-6-26 10/609,275;US 2003-6-27 10/607,591;US1.具有用于实现软件开发体系结构的计算机可执行指令的一个或多个计算机可读介质,其特征在于,该软件开发体系结构包括一软件开发场景不相关的中间表示格式;一个或多个异常处理模型,用于支持多个程序设计语言专用异常处理模型;一类型系统,用于表示多个源语言的类型表示;以及一代码生成器,用于生成以多个执行体系结构为目标的代码。2.如权利要求1所述的一个或多个计算机可读介质,其特征在于,所述体系结构可调节以产生范围从轻型的JIT编译器到整体程序优化编译器的目标软件开发工具。3.如权利要求1所述的一个或多个计算机可读介质,其特征在于,所述体系结构能够被配置成产生具有不同范围的存储器占用面积、编译速度和优化的目标软件开发工具。4.如权利要求1所述的一个或多个计算机可读介质,其特征在于,所述软件开发体系结构可用于产生可通过将修改组件与该软件开发体系结构相组合来进行修改的软件开发工具。5.如权利要求1所述的一个或多个计算机可读介质,其特征在于,所述软件开发体系结构可用于通过将软件开发体系结构的二进制版本与修改组件动态地进行链接来产生软件开发工具。6.如权利要求1所述的一个或多个计算机可读介质,其特征在于,所述中间表示格式在采用该中间表示格式的软件工具的运行时是可扩展的。7.如权利要求1所述的一个或多个计算机可读介质,其特征在于,所述体系结构可与一个或多个软件开发组件相组合。8.如权利要求7所述的一个或多个计算机可读介质,其特征在于,所述一个或多个软件开发组件包括描述目标软件开发工具的数据。9.如权利要求7所述的一个或多个计算机可读介质,其特征在于,所述一个或多个软件开发组件为所述代码生成器提供了目标执行体系结构数据。10.如权利要求7所述的一个或多个计算机可读介质,其特征在于,所述一个或多个软件开发组件为所述类型系统提供了一个或多个类型校验规则。11.如权利要求7所述的一个或多个计算机可读介质,其特征在于,所述一个或多个软件开发组件为所述体系结构提供了一组类扩展声明。12.如权利要求7所述的一个或多个计算机可读介质,其特征在于,所述组合的一个或多个软件开发组件和体系结构产生一目标软件开发工具。13.如权利要求12所述的一个或多个计算机可读介质,其特征在于,所述目标软件开发工具包括本机编译器。14.如权利要求12所述的一个或多个计算机可读介质,其特征在于,所述目标软件开发工具包括JIT编译器。15.一种创建目标软件开发工具的方法,其特征在于,所述方法包括接收指定了专用于一个或多个软件开发场景的功能的至少一个计算机可读规范;根据所述至少一个规范创建至少一个软件开发组件;以及将所述至少一个软件开发组件集成到一软件开发场景不相关框架中。16.如权利要求15所述的方法,其特征在于,它还包括编译所述至少一个软件开发组件和框架,以创建所述目标软件开发工具。17.如权利要求15所述的方法,其特征在于,根据多个计算机可读规范,为多个相应的软件开发场景创建的软件开发组件被集成到所述框架中。18.如权利要求17所述的方法,其特征在于,所述多个计算机可读规范为以下相应的软件开发场景指定了功能目标执行体系结构;输入语言或者输入二进制格式;以及编译类型。19.如权利要求15所述的方法,其特征在于,所述计算机可读规范为所述软件开发工具的目标执行体系结构指定了功能。20.如权利要求15所述的方法,其特征在于,所述计算机可读规范为所述软件开发工具指定了用于适应输入语言的功能。21.如权利要求15所述的方法,其特征在于,所述计算机可读规范为所述软件开发工具指定了用于适应二进制输入的功能。22.如权利要求15所述的方法,其特征在于,所述计算机可读规范包括用于类型校验一个或多个语言的一个或多个规则组。23.如权利要求15所述的方法,其特征在于,所述计算机可读规范包括专用于一个或多个软件开发场景的一组类扩展声明。24.如权利要求15所述的方法,其特征在于,所述计算机可读规范包括用于处理能够表示多个程序设计语言的中间表示格式的功能。25.如权利要求24所述的方法,其特征在于,所述中间表示格式包括能够支...

【专利技术属性】
技术研发人员:AVS萨斯特里AE艾尔斯AJ爱德华兹CL米谢尔DM吉尔斯DR小塔迪蒂J伯格ML罗伯茨MR普莱斯克VK格罗弗
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1