[发明专利]防内存越界的程序编译方法及装置有效
申请号: | 202111033200.3 | 申请日: | 2021-09-03 |
公开(公告)号: | CN113485716B | 公开(公告)日: | 2021-11-23 |
发明(设计)人: | 刘晓建 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F12/02;G06F12/1009 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 李威 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 越界 程序 编译 方法 装置 | ||
本说明书一个或多个实施例提供一种防内存越界的程序编译方法及装置,其中所述方法包括:在将源程序编译为目标程序的过程中,针对所述源程序中的内存访问代码生成地址拼接机器码,所述目标程序对应的内存分配空间处于一段连续的虚拟地址段内,所述虚拟地址段的段基址包含位于高位的段号和位于低位的若干零值逻辑位,所述虚拟地址段的段长不小于所述若干零值逻辑位所能够表示的最大地址空间;所述地址拼接机器码用于:针对所述内存访问代码所需访问的原始地址,将所述原始地址的低位数据与所述段号进行拼接,得到的拼接地址用于替代所述原始地址以访问内存中的目标内存空间,其中所述低位数据与所述零值逻辑位的位数相同。
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种防内存越界的程序编译方法及装置。
背景技术
程序在内存中预先分配的虚拟地址空间中运行,为了防止程序在访问内存的过程中访问到虚拟地址空间之外的地址空间从而出现内存越界的问题,通常会在访问内存之前对所需访问的地址进行越界检查,并在确保访存地址未发生越界的情况下访问内存。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种防内存越界的程序编译方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种防内存越界的程序编译方法,包括:
在将源程序编译为目标程序的过程中,针对所述源程序中的内存访问代码生成地址拼接机器码,所述目标程序对应的内存分配空间处于一段连续的虚拟地址段内,所述虚拟地址段的段基址包含位于高位的段号和位于低位的若干零值逻辑位,所述虚拟地址段的段长不小于所述若干零值逻辑位所能够表示的最大地址空间;所述地址拼接机器码用于:
针对所述内存访问代码所需访问的原始地址,将所述原始地址的低位数据与所述段号进行拼接,得到的拼接地址用于替代所述原始地址以访问内存中的目标内存空间,其中所述低位数据与所述零值逻辑位的位数相同。
根据本说明书一个或多个实施例的第二方面,提出了一种防内存越界的程序编译装置,包括:
地址拼接机器码编译单元,用于在将源程序编译为目标程序的过程中,针对所述源程序中的内存访问代码生成地址拼接机器码,所述目标程序对应的内存分配空间处于一段连续的虚拟地址段内,所述虚拟地址段的段基址包含位于高位的段号和位于低位的若干零值逻辑位,所述虚拟地址段的段长不小于所述若干零值逻辑位所能够表示的最大地址空间;所述地址拼接机器码用于:
针对所述内存访问代码所需访问的原始地址,将所述原始地址的低位数据与所述段号进行拼接,得到的拼接地址用于替代所述原始地址以访问内存中的目标内存空间,其中所述低位数据与所述零值逻辑位的位数相同。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面中任一项所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种防内存越界的程序编译方法的应用场景图。
图2是一示例性实施例提供的一种防内存越界的程序编译方法的流程图。
图3是一示例性实施例提供的一种拼接寻址方式的硬件实现图。
图4是一示例性实施例提供的一种设备的结构示意图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111033200.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种大型管道端面自动倒角装置
- 下一篇:一种方便安装的厨房通风装置