[发明专利]一种程序调用方法、芯片及计算机存储介质在审
申请号: | 201910512465.8 | 申请日: | 2019-06-13 |
公开(公告)号: | CN112084013A | 公开(公告)日: | 2020-12-15 |
发明(设计)人: | 李广耀;陆本胜 | 申请(专利权)人: | 合肥杰发科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/54 |
代理公司: | 深圳市威世博知识产权代理事务所(普通合伙) 44280 | 代理人: | 李庆波 |
地址: | 230000 安徽省合肥市*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 调用 方法 芯片 计算机 存储 介质 | ||
本发明公开了一种程序调用方法、芯片及计算机存储介质,该程序调用方法包括在第一程序中将第二程序中变量的地址进行固定;其中,第一程序与第二程序为独立编译;第一程序调用第二程序,对运行第一程序所需的寄存器进行保护。通过上述方式,本发明能够避免多个程序独立编译且存在函数调用关系时出现变量地址重叠和寄存器冲突的问题,提高安全性。
技术领域
本发明涉及计算机技术领域,具体涉及一种程序调用方法、芯片及计算机存储介质。
背景技术
在多程序/函数独立编译的软件开发项目中,由于多个程序/函数是独立编译的,程序之间互相不知道对方变量地址的分配情况,在存在函数调用关系的情况下,往往存在变量地址相互重叠的问题,由此就带来了一些应用的问题;以A、B两个程序为例进行说明,A程序调用B程序中的子函数或B程序调用A程序中的子函数可能出现异常问题,比如返回值不正确、修改了不应被修改的变量或者程序跑飞等,多个程序的情况与此类似。
本发明的发明人在长期研发中发现,对于相对高级的中央处理器(CPU,CentralProcessing Unit),在设计CPU时就考虑到了独立编译时变量地址相互重叠的问题,如先进精简指令集计算机(ARM,Advanced Reduced Instruction Set Computer Machines)的CPU大部分都支持ARM-Thumb过程调用标准(ATPCS,ARM-THUMB Procedure Call Standard)或者ARM体系结构过程调用标准(AAPCS,ARM Architecture Procedure Call Standard)规则,该规则就保证了独立编译的函数调用不会产生变量覆盖或篡改等负面影响。现有做法是在CPU设计时就已经考虑和制定了相应规则(如ARM的ATPCS/AAPCS),该CPU在开发软件程序过程中就已经避免了独立编译时变量地址重叠的问题。但是对于简单CPU,如8051内核,以及更多的8位、16位或32位等简单CPU,并未考虑独立编译时变量地址重叠的问题,也就没有类似ARM的ATPCS/AAPCS等规则,无法避免变量地址重叠,难以避免程序返回值不正确、修改了不应被修改的变量或者程序跑飞,无法保证程序正常运行。
发明内容
本发明主要解决的问题是提供一种程序调用方法、芯片及计算机存储介质,能够避免多个程序独立编译且存在函数调用关系时,出现变量地址重叠和寄存器冲突的问题,提高安全性。
为解决上述技术问题,本发明采用的技术方案是提供一种程序调用方法,该程序调用方法包括:在第一程序中将第二程序中变量的地址进行固定;其中,第一程序与第二程序为独立编译;第一程序调用第二程序,对运行第一程序所需的寄存器进行保护。
为解决上述技术问题,本发明采用的另一技术方案是提供一种芯片,该芯片包括互相连接的存储器和处理器,其中,存储器用于存储计算机程序,计算机程序在被处理器执行时,用于实现上述的程序调用方法。
为解决上述技术问题,本发明采用的另一技术方案是提供一种计算机存储介质,该计算机存储介质用于存储计算机程序,计算机程序在被处理器执行时,用于实现上述的程序调用的方法。
通过上述方案,本发明的有益效果是:预先固定第二程序中变量的地址,以避免和第一程序中变量的地址冲突;可通过固定被调用程序中变量的地址,使得调用程序中的变量地址无法与被调用程序中变量的地址重叠,能够避免多个程序独立编译且存在函数调用关系时出现变量地址重叠的问题,且还可以通过对寄存器进行保护来进一步提高安全性,有效避免在程序调用过程中寄存器发生冲突的情况,避免程序调用后运行出现非预期结果的问题,防止运算结果错误或程序跑飞。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥杰发科技有限公司,未经合肥杰发科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910512465.8/2.html,转载请声明来源钻瓜专利网。