[发明专利]用户定义类型的编译时边界检查有效

专利信息
申请号: 201110306863.8 申请日: 2011-09-26
公开(公告)号: CN102402451A 公开(公告)日: 2012-04-04
发明(设计)人: D·S·哈维 申请(专利权)人: 微软公司
主分类号: G06F9/45 分类号: G06F9/45
代理公司: 上海专利商标事务所有限公司 31100 代理人: 陈斌
地址: 美国华*** 国省代码: 美国;US
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 用户 定义 类型 编译 边界 检查
【说明书】:

技术领域

发明涉及计算机可读介质、过程及计算机系统,尤其涉及用户定义类型的编译时边界检查。

背景技术

可在计算机程序中进行边界检查以检测变量是否在某些指定边界内。例如,在用一个值作为到阵列中的索引之前,可以检查该值以确定该值是否位于该阵列的边界内,这种边界检查有时候被称为索引检查或范围检查。失败的边界检查可以生成运行时错误,比如异常信号。试图访问在其边界之外的阵列或其他变量经常指示编程错误。然而,不总是在每次使用有边界变量之前执行边界检查,因为边界检查增加程序执行时间。

编译器有时候会自动消除被认为不必要的边界检查。作为示例,考虑从阵列内的一位置读取一值,然后将另一值(或同一值)存储回那个相同位置的程序代码。在没有任何优化的情况下,这个代码会包括从阵列读取阵列位置时的第一边界检查和写入阵列中的同一位置时的第二边界检查。但是编译器或其他优化工具在确定阵列大小没有被改变而且阵列中的同一位置正在被读取然后被写入之后,可能自动消除第二边界检查。更一般地,在编译器和其他工具中使用多种优化以自动减少或消除冗余的边界检查。

发明内容

对阵列访问的自动化的边界检查不总被使用,这是由于它对程序的性能有实际的(或感觉得到的)影响。但是自动化的边界检查对于选择使用它来更安全地访问阵列的开发者来说仍然是方便可用的。然而,当开发者使用具有更复杂结构的定制数据类型时,或者以其他方式背离简单阵列时,针对非法访问的检查有时候涉及人工插入边界检查代码。不幸的是,当开发者显式编写边界检查时,该边界检查代码的目的对于编译器来说并非显见,所以编译器缺乏允许它移除冗余的边界检查的知识。

此处所描述的一些实施例提供用户定义类型的自动编译时边界检查,部分通过在源代码中标识用户定义类以安全访问显式分配的存储器。该用户定义类具有由开发者用用户定义边界检查注释(例如,向编译器指示该代码访问存储器映射的缓冲区或其他显式分配的存储器的注释)注释的存储器访问代码成员。该用户定义类还具有由开发者注释以向该编译器指示它提供用于生成对存储器访问代码的边界检查的边界信息的边界提供成员。该边界提供成员可以是例如含有边界的整数字段,或者是在被调用时返回边界的方法。

该用户定义边界的检查可在编程语言没有边界检查时提供边界检查,或者可以补充现有的边界检查,例如,通过包装内建阵列类型或垃圾收集器托管类型。边界检查可以扩展到阵列和布局由编译器控制的其他类型之外;该用户定义类可被定义为不使用任何多元素阵列成员作为组成类型。

该用户定义边界检查注释的边界检查表示由该编译器插入中间语言代码中。然后优化自动减少否则会在该可执行代码中出现的重复的边界检查。该优化可被应用于该中间语言边界检查表示、应用于插入的边界检查代码或应用于两者。

所给出的示例只是说明性的。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。相反地,提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明由权利要求书限定,在本发明内容与权利要求书有冲突的情况下,应该以权利要求书为准。

附图说明

将参考附图给出更具体的描述。这些附图只示出了选定的方面,且因此不完全确定覆盖或范围。

图1是示出一计算机系统的框图,该计算机系统具有至少一个处理器、至少一个存储器(memory)、至少一个程序源代码、以及可存在于多个网络节点上的操作环境中的其他项目,并且还示出了配置的存储介质实施例;

图2是示出在一示例体系结构中,任意复杂的用户定义数据类型的编译时边界检查的框图;以及

图3是示出某一过程的步骤和配置的存储介质实施例的流程图。

具体实施方式

概览

今天的托管代码系统(managed code system),像微软.NET和环境(分别是微软公司和Oracle美国公司的标记)中的那些,经常假定被托管的代码程序所使用的所有存储器(memory)被自动分配和管理。然而,在系统编程中,尤其是在设备驱动器编程中,这种假定可能失败。在某些情况下,设备驱动器使用的存储器被物理设备在位置上固定,如当该设备上的缓冲区(buffer)被存储器映射到地址的特定集合中时。在其他情况下,显式管理存储器以避免数据的不必要复制或在特定时限内重用缓冲区。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201110306863.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top