计算机可读取存储介质、内存指针的编译方法和装置制造方法及图纸

技术编号:31089334 阅读:15 留言:0更新日期:2021-12-01 12:49
本发明专利技术涉及一种存储介质、内存指针的编译方法和装置,该编译方法包含:分析编译单元中的内容,用于确定指针操作数和指针形式参数所指向的物理地址空间;为每个能够确定物理地址空间的第一指针操作数和第一指针形式参数更新编译单元中的代码,用于让第一指针操作数和第一指针形式参数携带物理地址空间信息;针对每个不能够确定物理地址空间的第二指针操作数和第二指针形式参数,插入调用编码函数的指令和/或调用解码函数的指令,用于让编译单元被执行时确定第二指针操作数和第二指针形式参数所指向的物理地址空间。本发明专利技术通过如上所述的编译方法,当芯片架构中没有支持泛型指针的硬件而软件中使用了泛型指针,软件依然可以正常运行。正常运行。正常运行。

【技术实现步骤摘要】
计算机可读取存储介质、内存指针的编译方法和装置


[0001]本专利技术涉及源码编译,尤指一种计算机可读取存储介质、内存指针的编译方法和装置,用于支持隐含地址空间信息的泛型指针。

技术介绍

[0002]计算机系统中的内存通常会划分为不同地址空间,比如全局空间(global space)、共享空间(shared space)、私有空间(private space)等,以满足不同类型的应用程序访问数据的需要。目前的编程模型允许任意物理地址空间的指针能够转变为泛型指针(generic pointers),同时允许泛型指针能够映射到任意物理地址空间。在硬件运行时,需要决定泛型指针指向哪个特定的物理地址空间。为了支持这种泛型指针的功能,一些芯片会设置专用硬件,用于执行泛型指针的内存访问指令。在内存访问指令执行时,硬件能够动态的解析地址空间信息。例如,芯片架构可以将地址空间进行固定的划分,让不同地址空间使用不重叠的地址范围,使得芯片执行内存访问指令时根据地址范围的差异就能够访问到指定的内存地址空间。然而,专用硬件会增加芯片的硬件开销。在芯片面积和功耗有严格限制的情况下,当芯片架构中没有支持泛型指针的硬件而软件中使用了泛型指针,程序就无法正常运行。因此,本专利技术提出一种计算机可读取存储介质、内存指针的编译方法和装置,用于支持隐含地址空间信息的泛型指针。

技术实现思路

[0003]有鉴于此,如何支持隐含地址空间信息的泛型指针,是用于计算机系统的重要课题。
[0004]本专利技术涉及一种内存指针的编译方法,包含:分析编译单元中的内容,用于确定编译单元中的指针操作数和指针形式参数所指向的物理地址空间;为每个能够确定物理地址空间的第一指针操作数和第一指针形式参数更新编译单元中的代码,用于让第一指针操作数和第一指针形式参数携带物理地址空间信息;针对每个不能够确定物理地址空间的第二指针操作数和第二指针形式参数,插入用于调用编码函数的指令,或者插入用于调用解码函数的指令,或者插入用于调用编码函数和解码函数的指令,用于让编译单元被执行时确定所述第二指针操作数和所述第二指针形式参数所指向的物理地址空间。
[0005]本专利技术还涉及一种计算机可读取存储介质,用于存储能够被处理器执行的程序代码,并且当程序代码被处理器执行时实现如上所述的内存指针的编译方法。
[0006]本专利技术还涉及一种内存指针的编译装置,包含:存储装置;以及处理器。存储装置用于存储编译单元的源代码。处理器分析编译单元中的内容,用于确定编译单元中的指针操作数和指针形式参数所指向的物理地址空间;为每个能够确定物理地址空间的第一指针操作数和第一指针形式参数更新编译单元中的代码,用于让第一指针操作数和第一指针形式参数携带物理地址空间信息;针对每个不能够确定物理地址空间的第二指针操作数和第二指针形式参数,插入用于调用编码函数的指令,或者插入用于调用解码函数的指令,或者
插入用于调用编码函数和解码函数的指令,用于让编译单元被执行时确定所述第二指针操作数和所述第二指针形式参数所指向的物理地址空间。
[0007]上述实施例的优点之一,通过如上所述的编译方法,当芯片架构中没有支持泛型指针的硬件而软件中使用了泛型指针,软件依然可以正常运行。
[0008]本专利技术的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
[0009]此处所说明的附图用于提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
[0010]图1为依据本专利技术实施例的用于实施内存指针的编译装置的框图。
[0011]图2为依据本专利技术实施例的内存指针的编译方法流程图。
[0012]图3为依据本专利技术实施例的函数体中的指针操作数的地址空间处理的方法流程图。
[0013]图4为依据本专利技术实施例的函数的指针形式参数的地址空间处理的方法流程图。
[0014]图5为依据本专利技术实施例的物理地址的编码示意图。
[0015]图6为依据本专利技术实施例的选择程序的方法流程图。
[0016]图7为依据本专利技术实施例的函数体中的指针操作数的地址空间后处理的方法流程图。
[0017]其中,附图中符号的简单说明如下:
[0018]10:编译计算机;110:处理器;130:内存;140:输入装置;160:显示装置;170:存储装置;190:总线架构;S210~S250:方法步骤;S310~S340:方法步骤;S410~S466:方法步骤;500:标记后物理地址;510:物理地址;530:物理地址空间信息;S610~S660:方法步骤;S710~S730:方法步骤。
具体实施方式
[0019]以下将配合相关附图来说明本专利技术的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
[0020]必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
[0021]本专利技术中使用如“第一”、“第二”、“第三”等词是用于修饰权利要求中的组件,并非用于表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用于区别具有相同名字的组件。
[0022]必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
[0023]参考图1。编译计算机10可实施在大型主机、工作站、个人计算机、笔记本计算机(Laptop PC)等电子产品之中。编译计算机10可包含处理器110、内存130、输入装置140、显
示装置160和存储装置170,并且通过总线架构190相互连接,以传递数据、地址、控制信号等。处理器110可为中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、通用图形处理器(General

Purpose computing on Graphics Processing Unit,GPGPU)等,用于加载并执行编译器(compiler)的计算机代码来执行各式各样的操作,例如,整数、浮点数的加法和乘法计算、比较操作、布尔(Boolean)运算、比特位移、代数函数(如平面插值、三角函数、指数函数、对数函数)等。处理器110在执行的过程中,可为编译器从内存130读取数据,和写入数据到内存130,包含变量、数据表、各式各样的数字文件等。内存130可实施为动态随机存取存储器(Dynamic Random Acce本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存指针的编译方法,由处理器于执行编译器的程序代码时执行,其特征在于,包括:分析编译单元中的内容,用于确定所述编译单元中的指针操作数和指针形式参数所指向的物理地址空间;为每个能够确定物理地址空间的第一指针操作数和第一指针形式参数更新所述编译单元中的代码,用于让所述第一指针操作数和所述第一指针形式参数携带物理地址空间信息;以及针对每个不能够确定物理地址空间的第二指针操作数和第二指针形式参数,插入编码流程的指令,或者插入解码流程的指令,或者插入所述编码流程和所述解码流程的指令,用于让所述编译单元被执行时确定所述第二指针操作数和所述第二指针形式参数所指向的物理地址空间,其中,所述编码流程包含第一操作,所述第一操作用于将物理地址转换成为携带所述物理地址和物理地址空间信息的标记后物理地址,其中,所述解码流程包含第二操作、第三操作和第四操作,所述第二操作用于依据所述标记后物理地址中的所述物理地址和所述物理地址空间信息,生成指向内存中的所有使用到的所述物理地址空间的新物理地址,所述第三操作用于依据所述标记后物理地址的存取操作,对所有使用到的所述物理地址空间的所述新物理地址,产生相应的存取操作指令,并且所述第四操作用于实施选择程序,用以在所述编译单元被执行时,根据接收到的物理地址空间信息,选择相应的所述存取操作指令来执行,以存取相应的所述物理地址空间的所述新物理地址。2.如权利要求1所述的内存指针的编译方法,其特征在于,不同的物理地址空间对应到所述内存中不重叠的物理存储单元。3.如权利要求1所述的内存指针的编译方法,其特征在于,包含:将所述编译单元中每个所述第一指针操作数替换成标记了物理地址空间信息的指针操作数。4.如权利要求1所述的内存指针的编译方法,其特征在于,包含:在所述编译单元中的第一函数中,对使用了所述第一指针形式参数的指令,用包含特定物理地址空间信息的指针,替换所述第一指针形式参数;以及针对所述编译单元中的第二函数内所使用的所述第二指针形式参数,在所述第二函数中使用所述第二指针形式参数的指令之前,插入所述解码流程的指令,用以处理所述第二指针形式参数;并且在所述编译单元中用于调用所述第二函数的指令之前,插入所述编码流程的指令,用以处理所述第二函数所需的实际参数。5.如权利要求1所述的内存指针的编译方法,其特征在于,包含:针对所述编译单元中的输出指针的加载指令,在每个所述加载指令之后插入所述解码流程的指令,用以处理所述输出指针。6.如权利要求1所述的内存指针的编译方法,其特征在于,包含:针对所述编译单元中的不能够确定物理地址空间的输出指针的选择指令和条件分支指令,在每个所述选择指令或者每个所述条件分支指令之前,插入所述编码流程的指令,用以处理每个所述选择指令或者所述条件分支指令的操作数;并且在每个所述选择指令或者
每个所述条件分支指令之后,插入所述解码流程的指令,用以处理所述输出指针。7.如权利要求1所述的内存指针的编译方法,其特征在于,包含:针对所述编译单元中的具有所述第一指针操作数作为存储内容的存储指令,在每个所述存储指令之前插入所述编码流程的指令,用以处理所述第一指针操作数。8.一种计算机可读取存储介质,用于存储能够被处理器执行的程序代码,其特征在于,所述程序代码被所述处理器执行时实现如...

【专利技术属性】
技术研发人员:霍元宏章嘉晨丁阳王亮
申请(专利权)人:上海壁仞智能科技有限公司
类型:发明
国别省市:

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

1