用于处理文件的机器执行方法及结合该方法的机器技术

技术编号:2848221 阅读:177 留言:0更新日期:2012-04-11 18:40
提供多个源文件和一个或多个头文件。包含其中几个源文件引用的信息的头文件。预处理所述初始文件中的每一个以生成一个相应的预处理文件,所述预处理包括利用来自所述第一头文件的信息来扩展多个所述源文件。应用集体处理步骤来对来自所述预处理文件的信息进行协同改变;改变的预处理文件用于再生成修改的源文件和头文件。为了再生成第一头文件,根据检测到选出的文件详细描述了来自所述第一头文件的信息,选出所述预处理文件之一。从所选出的文件的信息再生成所述第一头文件。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及可编译计算机程序的处理,该程序由多个文件组成,例如源文件和头文件,或者更一般地说本专利技术涉及可编译函数系统描述的处理,该系统描述由多个文件组成。
技术介绍
大规模计算机程序的生成通常包括大量文件的组合。为了使设计易于管理,将源代码模块分布于不同文件中,这些文件在某种程度上能够被独立设计和处理。例如,C++程序设计涉及使用大量的类,这些类可被分布在若干源文件中。可相互独立地检查这些源文件的语法错误并将其编译成目标代码。从不同源文件得到的信息只在最后阶段,链接阶段,组合起来以生成机器可执行的计算机程序。在源文件的独立处理期间,设计信息单元可能需要对若干源文件均是可用的。例如,C++程序设计中,类定义必须对不同的源文件均是可访问的,以便这些源文件使用该类或实现该类。含有可共享的设计单元的头文件就是用于这个目的。那些使用设计信息单元的源文件含有“include(包含)语句”,该语句引用含有该单元的头文件。头文件依次也能够含有include语句。在语法检查和编译之前,由预处理器对每个源文件进行预处理,该预处理器生成含有来自源文件的代码的预处理文件,但是在其中通过替换来自该include语句引用的头文件的信息来扩展该include语句。该预处理器递归地执行这一操作如果该头文件依次含有包含声明,那么所引用的信息在预处理文件里就被扩展,等等。这可能涉及从被引用多次的头文件复制信息。程序员通常加入条件include语句,该条件include语句使预处理器抑制这种复制。该条件include语句在先前头文件未被扩展的条件下包含该头文件。在很多情况下,这种抑制恰好是需要的,因为不然插入多次复制定义,这将会中断编译。该预处理文件用来进行语法检查和目标文件的生成。在链接阶段,该目标文件被组合起来形成可执行程序。这样,在初始的单独源文件处理阶段和最后集体文件处理(collective file processing)阶段之间存在严格的分离。在初始阶段每个源文件单独处理,而在最后阶段所有从源文件得到的文件都集总地处理。单独源文件处理阶段跟在集体文件处理阶段之后。然而,由于各种原因,有人提出通过利用在单独文件处理阶段和集体文件处理阶段之间的多次交替(alternation)来摆脱这种严格的分离。美国专利编号5,920,723描述了一个过程,在该过程中,在链接之前执行集体源文件优化处理阶段。该优化阶段在链接阶段之前将从不同源文件得到的信息组合起来,以优化程序代码。优化可能涉及指令修改、指令移动、冗余指令移除、补偿指令添加等。该优化阶段生成各个优化中间文件,每个中间文件对应各自的一个源文件。在优化阶段之后,该中间文件再一次经过单独处理而生成目标文件。该目标文件最后经过集体处理而链接成可执行程序。原则上该中间文件应该以与源文件相同的语法来表示。这样,源文件和中间文件均能够由相同的编译器程序处理,这样不需要单独的编译器。当单独处理阶段与集体处理阶段交替时,可能出现如何将处理的信息拆分成多个单独文件的问题。在美国专利编号5,920,723的案子中,由于源文件和中间文件之间存在一对一的关系,因而没有引出该问题。利用初始头文件可单独编译该中间文件。当除了传统的优化外还需要程序重构,例如,头文件也被更改时则将会出现问题。这种重构是需要的,例如用来重新设计程序以便在不同类型的(多)处理器上执行,例如用来替换不同程序单元间的通信信道。在这种情况下源文件和头文件被预处理器预处理。作为预处理的结果,来自头文件的相同信息的拷贝可能出现在不同的预处理文件中。当这种来自头文件的信息发生改变时,首选要保证出现在不同预处理文件中的、来自相同头文件的信息未发生不一致的改变。此外,在集体处理阶段的结尾必须再生成头文件,并且必须再引入引用该再生成的头文件的include语句(术语“再生成的”文件指出对应于源文件的文件且发生改变的文件,其作为集体处理阶段的结果)。这样,该再生成的源文件和头文件能够利用对初始源文件和头文件均可用的工具来进行处理。这引起了头文件生成的另外的问题。初见似乎是,如果能够在预处理文件中标记出初始头文件,那么新头文件和新include语句则能够从该信息得到,如通过修改而再生得到。然而,这是不可能的,因为由于条件include语句的存在,预处理期间的头文件扩展可能是不完全的。这样在多文件处理中,当不同源文件每个都用来自通用文件的信息,例如头文件,独立地进行预处理,然后集总地进行修改时就存在问题,并且不得不在修改后再生成新的源文件和通用文件。
技术实现思路
在其他目标之中,本专利技术的一个目标是提供一种从修改的预处理文件再生成源文件和通用文件的方法和系统。本专利技术的另一个目标是从含有来自通用文件的信息扩展的源文件版本再生出通用文件。根据本专利技术的方法在权利要求1中阐明。每个从各个初始文件(即源文件)生成的预处理文件经过协同的改变,其中,该初始文件具有从一个或多个通用文件(即头文件)扩展的添加信息。在改变之后,预处理文件被用来再生成初始文件的再生成文件(即再生成的源文件)和通用文件的再生成文件(即再生成的头文件)。既然从通用文件扩展到不同预处理文件的信息数量可能不同,那么就需要特别的注意保证该生成的文件足够完整。因此选出期望含有足够完整的头文件信息的预处理文件来再生成通用文件,或者至少用在决定完整性的那部分再生成中。所选出的用于再生成通用文件的预处理文件是根据初始文件引用头文件的类型选出的。含有通用文件中所定义的软件组件实现的预处理文件被用来生成头文件。在生成源文件和头文件之后,例如,该文件可通过将其编译成为目标文件,并随后进行链接而被单独处理,例如用来生成可执行程序。计算机可继而执行这种可执行程序的指令。如上所述,优选地,根据检测到该通用文件中已然声明的软件组件实现,选出该预处理文件,以用于通用文件的再生成。优选地,在协同的集体处理之前完成该选择,以便对于通用文件只需将来自选出的预处理文件的信息保留在计算机内存中以便进行协同处理。优选地,使用两遍操作(two-pass)处理。第一遍操作决定了应该为哪个通用文件使用哪个预处理文件。第二遍操作从选出的预处理文件中获取通用文件信息。第一遍操作决定该预处理文件读取的顺序,以便选出特定预处理文件在上述顺序中的位置,这样如果该特定预处理文件含有引用一个或多个深一层软件组件的软件组件实现时,在上述顺序中将该特定预处理文件定位在含有所有该一个或多个深一层软件组件实现的一个或多个预处理文件之后读取。换言之,读取是按照自下而上的方式进行的,以便读取定义了在软件组件引用层次中最底层组件的第一个文件(如果第一个组件的定义引用第二个组件那么第一个组件在该层次中比较高)。这样,只有第一个遇到的通用文件扩展需要保留。优选地,将标记信息包含在预处理文件中来标记通用文件和被扩展了的信息本身,其中,信息被从该通用文件扩展到预处理文件。在再生成期间,该标记信息用来插入指令来代替在初始文件的再生成文件中的扩展信息。该插入指令控制第一个通用文件的再生成文件的包含,在其中该第一个通用文件被扩展到多个预处理文件中。该通用文件的再生成文件是从由选出的预处理文件中的标记信息所标记的扩展信息再生成的。这样,该再生成文件能够以与初始文件相同的方式使本文档来自技高网
...

【技术保护点】
一种用于处理文件的机器执行方法,该方法包括提供多个初始文件;提供一个或多个通用文件,该文件含有该多个所述初始文件引用的信息;预处理所述初始文件中的每一个初始文件以生成一个相应的预处理文件,所述预处理包括利用来自所述通 用文件中第一个文件的信息来扩展该多个所述初始文件;应用集体处理步骤来对来自所述预处理文件的信息进行协同改变;根据检测到选出的文件详细描述了来自所述通用文件中第一个文件的信息,选出所述预处理文件之一,以及对于受所述集体 处理步骤影响的所述初始文件和所述通用文件中第一个文件再生成多个再生成文件,利用来自所述选出的预处理文件的信息来控制对于所述通用文件中第一个文件的所述再生成文件的所述再生成,以便所述选出的预处理文件中的信息控制在对于所述通用文件中第一个文件的所述再生成文件中将包含多少信息。

【技术特征摘要】
【国外来华专利技术】EP 2003-4-16 03101032.51.一种用于处理文件的机器执行方法,该方法包括提供多个初始文件;提供一个或多个通用文件,该文件含有该多个所述初始文件引用的信息;预处理所述初始文件中的每一个初始文件以生成一个相应的预处理文件,所述预处理包括利用来自所述通用文件中第一个文件的信息来扩展该多个所述初始文件;应用集体处理步骤来对来自所述预处理文件的信息进行协同改变;根据检测到选出的文件详细描述了来自所述通用文件中第一个文件的信息,选出所述预处理文件之一,以及对于受所述集体处理步骤影响的所述初始文件和所述通用文件中第一个文件再生成多个再生成文件,利用来自所述选出的预处理文件的信息来控制对于所述通用文件中第一个文件的所述再生成文件的所述再生成,以便所述选出的预处理文件中的信息控制在对于所述通用文件中第一个文件的所述再生成文件中将包含多少信息。2.如权利要求1所述的用于处理文件的机器执行方法,包括使用来自对于所述通用文件中第一个文件的所述再生成文件的信息,执行对于初始文件的再生成文件的第一独立处理,之后,通过链接从对于所述初始文件的所述再生成文件得到的信息,对机器指令程序进行链接。3.如权利要求2所述的用于处理文件的机器执行方法,包括仅对于那些受所述集体处理影响的初始文件和通用文件来有选择地再生成多个再生成文件,并且在所述独立处理中使用不受影响的初始文件和通用文件。4.如权利要求1所述的用于处理文件的机器执行方法,其中,所述多个初始文件引用的所述信息是软件组件结构的定义,所述选出的文件通过为所述软件组件的单元提供实现程序而详细描述了所述信息。5.如权利要求1所述的用于处理文件的机器执行方法,包括以下步骤第一次读取所述预处理文件来执行所述选择;第二次读取所述预处理文件,其中,在对于所述通用文件中第一个文件的扩展信息中,仅将来自所述选出的预处理文件的扩展信息保留在计算机内存中,以便在应用集体处理期间使用。6.如权利要求5所述的用于处理文件的机器执行方法,其中所述选择包括检测在所述预处理文件中的软件组件的实现;如果一个特定预处理文件包含一个软件组件的实现,则选择该特定预处理文件,以便将来自所述第一通用文件的信息保留在所述内存中。7.如权利要求6所述的用于处理文件的机器执行方法,其中,根据所述第一次读取预先选出所述第二次读取期间读取所述预处理文件的顺序,选择特定预处理文件在所述顺序中的位置,以使得如果该特定预处理文件包含引用了一个或多个深一层软件组件的软件组件的实现,那么在所述顺序中定位所述特定预处理文件,以便在包含所有所述一个或多个深一层软件组件的实现的一个或多个预处理文件之后读取所述特定预处理文件。8.如权利要求7所述的用于处理文件的机器执行方法,包括生成伪文件,每个伪文件针对一个尚未找到其实现预处理文件的相应的软件组件,且读取所述伪文件作为所述第二次读取的一部分,所述生成所述伪文件包括在每个特定伪文件中插入指令来包含所述通用文件并预处理所述伪文件,其中所述通用文件定义了为之生成所述伪文件的所述软件组件,或者,取代所述插入和预处理,在所述伪文件中插入所述通用文件的扩展。9.如权利要求1所述的用于处理文件的机器执行方法,所述预处理包括在所述预处理文件中包含标记信息,以标识所述通用文件中第一个文件和已扩展的所述信息,其中来自所述通用文件中第一个文件的信息已被扩展到所述预处理文件中,所述再生成包含使用所述标记信息将指令而不是所述扩展信息插入到对于所述初始文件的所述再生成文件中,所述指令控制对于所述通用文件中第一个文件的所述再生成文件的包含,其中所述通用文件中第一个文件被扩展到所述预处理文件中,根据在所述选出的预处理文件中由所述标记信息标记的扩展信息,再生成对于所述通用文件中第一个文件的所述再生成文件。10.如权利要求9所述的用于处理文件的机器执行方法,其中该多个所述初始文件引用的所述信息是软件组件结...

【专利技术属性】
技术研发人员:翁德雷波普
申请(专利权)人:NXP股份有限公司
类型:发明
国别省市:NL[荷兰]

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

1