[發明專利]用戶定義類型的編譯時邊界檢查有效
| 申請號: | 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)被存儲器映射到地址的特定集合中時。在其他情況下,顯式管理存儲器以避免數據的不必要復制或在特定時限內重用緩沖區。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于微軟公司,未經微軟公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110306863.8/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種工業機風扇高置和集成的發動機前端輪系
- 下一篇:一種平衡式一拖二采油機組





