[发明专利]编译源代码为目标代码及执行目标代码的方法无效
申请号: | 86107764.4 | 申请日: | 1986-11-14 |
公开(公告)号: | CN1003679B | 公开(公告)日: | 1989-03-22 |
发明(设计)人: | 阿施法·阿布杜里曼·穆施;卡尔·马克斯·施姆普福 | 申请(专利权)人: | 国际商用机器公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 中国国际贸易促进委员会专利代理部 | 代理人: | 余刚 |
地址: | 美国纽约州*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 编译 源代码 目标 代码 执行 方法 | ||
本发明涉及一种方法,在一个无向量或向量处理器中利用该方法,可以在源代码到机器可执行代码的编译期间分配及优化寄存器指定。
在编译程序构造的标准著作中,艾迪生-韦斯利出版公司1977年版,由爱荷等人所写的“编译程序设计的原理”一书和斯普林格-弗莱格1984年版,由韦特等人所著的“编译程序构造”一书中都指出,计算机源语言,例如PASCAL或FORTRAN,到可由目标机器执行的代码的转换是通过一系列变换来完成的。首先对源符号串进行词法分析,为翻译确定出原子单位或字,然后进行句法分析,确定出这些字之间的语法关系。输出是以“分析树”的形式表示的。该分析树被转换为源代码的中间语言表现形式,大多数编译程序并不明显地产生分析树,而当进行句法分析时形成中间代码。优化施加于中间代码,而后产生目标机器可执行代码或目标代码。
编译程序必须执行的任务中包括计算资源的分配和指定,以便由源代码指令流所确定的计算能够高效率地完成。有效“资源”中包括计算设备,例如ALU,输入/输出,包括寄存器的存贮器,操作系统成份等等。编译程序的优化部分的任务是(a)缩短代码长度,(b)在可能的地方增加执行速度,(c)通过资源的高效率分配,将开销降至最低程度。然后,资源使用或消耗程式一览表被送入正在编译的代码中。
众所周知,指令流可以被映成图形结构,并可利用图论特性的优越性。代码序列在局部优化中可以用基本程序块的图形性质进行分析而在全程优化中则可用程序块的流程图分析。
一个基本程序块是一个连续语句序列。该序列只能从头开始进入,共且在进入后语句是顺序执行的,除非到了结尾,否则不能停止或转移。
流程图描述了在基本程序块之间的控制流。例如,流程图将表示出基本程序块之间迭代或递归计算所需的循环,转移和嵌套。
数据相关性的无回路有向图(DAG)是一数据结构,用于分析基本程序块。例如,a=S+C由作为起始节点的b+c表达,每一节点通过各自的边连接于公共节点c。这不是流程图,虽然流程图的每个节点(基本程序块)可以由一个DAG表示。
“活变量分析”涉及一组技术,该组技术用于确定一个变量名是否具有一个经常在以后的计算中可能用到的值。如果一个变量名在基本程序块中重新定义之前被使用,或者“活”着离开这一程序块而未在程序块中被重新定义,则该变量被认为是“活”着进入程序块的。因此,一数值在寄存器中被计算之后,并假定在一基本程序块中已被使用过,如果它在程序块的结尾“死”了的活,则没必要存贮该数值。也即如果全部寄存器都已装满,而还需要另一个寄存器,则可指定当前含有“死”值的寄存器。
从概念上讲,第一个编译程序变换是将源代码串映成流程图,其流程图的每一节点都是基本程序块,其控制及数据路径关系由流程图的有边向确定。资源分配和指定的优化工作可以首先在局部或基本程序块这级进行,然后再在全程流程图一级进行。
在局部优化中,每一基本程序块被当作一个独立的单位,并在优化中不考虑程序块的内容。为基本程序块建立的数据相关图被变换并用以产生最终机器代码。然后被废弃,再进行下一个基本程序块。
“数据相关图”是一个基本程序块中的一种图论特征表示。由于一个基本程序块不能包含循环,因而所有“数据相关图”的基本块可以由DAG来表示。而DAG不必是树。作为示例,如果一个基本程序块由两条计算语句x=u+v和y=u+w组成,虽然它是无回路的,DAG仍将不是树。最后,全程优化执行一个流程图的全程重排,并在基本程序块之间提供上下文信息。
计算机包括主存贮器,其最块的形式是最昂贵的。若干有限的物理寄存器存贮操作数,以备计算和控制的立即使用。从寄存器到寄存器操作的计算机指令是最快速执行的。如果无法获得一个寄存器,则中间结果必须被装入主存贮器,大部分程序体及数据定位于该主存,或者当一个寄存器可以得到时,将中间结果从所述主存转入该寄存器,从主存到寄存器的装入及从寄存器到主存贮器的存贮需要更长一些的时间。因此,在评价一个流程图或基本程序块时,目标之一是在寄存器中保存尽可能多的计算名即变量,或保证在需要时可以获得一个寄存器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商用机器公司,未经国际商用机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/86107764.4/2.html,转载请声明来源钻瓜专利网。