[发明专利]防内存越界的程序编译方法及装置有效
申请号: | 202111033200.3 | 申请日: | 2021-09-03 |
公开(公告)号: | CN113485716B | 公开(公告)日: | 2021-11-23 |
发明(设计)人: | 刘晓建 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F12/02;G06F12/1009 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 李威 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 越界 程序 编译 方法 装置 | ||
1.一种防内存越界的程序编译方法,包括:
在将源程序编译为目标程序的过程中,针对所述源程序中的内存访问代码生成地址拼接机器码,所述目标程序对应的内存分配空间处于一段连续的虚拟地址段内,所述虚拟地址段的段基址包含位于高位的段号和位于低位的若干零值逻辑位,所述虚拟地址段的段长不小于所述若干零值逻辑位所能够表示的最大地址空间;所述地址拼接机器码用于:
针对所述内存访问代码所需访问的原始地址,将所述原始地址的低位数据与所述段号进行拼接,得到的拼接地址用于替代所述原始地址以访问内存中的目标内存空间,其中所述低位数据与所述零值逻辑位的位数相同。
2.根据权利要求1所述的方法,还包括:
针对所述内存访问代码生成地址计算机器码,所述地址计算机器码用于将根据所述内存访问代码携带的形式地址按照所述内存访问代码的访问类型对应的地址计算公式计算得到的所述原始地址写入第一预设存储空间,以使所述地址拼接机器码在执行时从第一预设存储空间处获取所述原始地址。
3.根据权利要求1所述的方法,所述地址拼接机器码中包含寄存器拼接机器码和寄存器访存机器码;其中,
所述寄存器拼接机器码用于将第一源寄存器中预先存储的所述段号与第二源寄存器中的预先存储的所述低位数据拼接得到的所述拼接地址写入目的寄存器;
所述寄存器访存机器码用于根据所述目的寄存器中写入的所述拼接地址访问所述内存中的所述目标内存空间。
4.根据权利要求1所述的方法,所述地址拼接机器码中包含拼接访存机器码,所述拼接访存机器码用于将所述原始地址写入原始地址寄存器,并根据拼接地址寄存器中生成的所述拼接地址访问所述内存中的所述目标内存空间;
其中,所述拼接地址寄存器中的高位空间与预先存储有所述段号的段号寄存器相连,所述拼接地址寄存器中的低位空间与原始地址寄存器中的低位空间相连,所述原始地址寄存器中的低位空间用于存储所述原始地址中包含的所述低位数据。
5.根据权利要求1所述的方法,所述将源程序编译为目标程序包括:
在对所述源程序进行解释执行的过程中,将所述源程序编译为所述目标程序;或者,
将所述源程序AOT编译为所述目标程序。
6.根据权利要求1所述的方法,所述段号或者所述段基址预先存储在第二预设存储空间中,以使所述地址拼接机器码在执行时从第二预设存储空间处获取所述段基址中包含的所述段号。
7.根据权利要求6所述的方法,第二预设存储空间包括下述任一:寄存器、所述虚拟地址段中预定义的内存空间或所述虚拟地址段外预定义的内存空间。
8.根据权利要求6所述的方法,第二预设存储空间仅参与生成所述地址拼接机器码的编译过程。
9.根据权利要求6所述的方法,第二预设存储空间的修改权限由操作系统所有。
10.根据权利要求1所述的方法,所述目标程序的首地址与所述虚拟地址段的段基址对齐。
11.根据权利要求1所述的方法,所述内存访问代码包括字节码。
12.根据权利要求1所述的方法,所述源程序或所述目标程序为部署于区块链系统中的智能合约。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111033200.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种大型管道端面自动倒角装置
- 下一篇:一种方便安装的厨房通风装置