[發明專利]用于使用寄存器分配器建立調用約定序言和收尾程序代碼的方法和裝置有效
| 申請號: | 00107019.3 | 申請日: | 2000-04-24 |
| 公開(公告)號: | CN1271889A | 公開(公告)日: | 2000-11-01 |
| 發明(設計)人: | 小C·N·克利克;C·A·維克;M·H·帕萊茨尼 | 申請(專利權)人: | 太陽微系統有限公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 中國專利代理(香港)有限公司 | 代理人: | 王勇,王忠忠 |
| 地址: | 美國加利*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 使用 寄存器 分配器 建立 調用 約定 序言 收尾 程序代碼 方法 裝置 | ||
本發明一般涉及一種用于提高軟件應用程序性能的方法和裝置。具體地說,本發明涉及一種使寄存器分配器建立用于子程序的調用約定序言和收尾程序代碼的方法和裝置
在致力于提高與計算機程序執行有關的效率的努力中,很多計算機程序在編譯過程中被“優化”。優化一個計算機程序一般用以消除實質上不使用的計算機代碼部分。另外,作為編譯處理的一部分的優化計算機程序可以重新構成計算操作以提供更為高效地執行的全部計算,從而消耗較少的計算機資源。
一個優化器用于將一個計算機程序、例如以諸如C++,FORTRAN,或Java字節碼之類的程序設計語言編寫的計算機程序高效變換或者否則編譯為更快的程序。更快的或者被優化的程序一般包括基本上所有與原始的或預先變換的計算機程序一樣的、可觀察到的行為。具體地說,被優化程序包括與其相關原始程序相同的數學行為。然而,優化器一般使用更少的計算重新創建相同的數學行為。
正如本領域技術人員所了解的,一個優化器一般包括一個用于控制寄存器在一個優化的或者否則為編譯的程序內部表示內的使用的寄存器分配器。一個寄存器分配器分配一個其中存儲與程序有關的數據的寄存器空間。與存取和一個計算機相關的“常規”存儲器空間、例如被分為棧頁槽的棧空間相關的速度相比,一個寄存器是一個與計算機的處理器相關的、可以被相對較快存取的存儲單元。
在寄存器分配處理之前,一組值、即輸入變量為編譯器所知,并且位于一個調用約定所規定的固定存儲單元中。如本領域技術人員所公知的,一個調用約定一般是一個由此進行到子程序的調用的約定。一個調用約定一般規定變量從哪里經過,即,每個變量所出現在的寄存器或棧頁槽。另外,一個調用約定可以規定在子程序期間必須保留的寄存器,即,被被調用者-保存寄存器。如果在子程序中使用被被調用者-保存寄存器,則一般需要保存并恢復被被調用者-保存寄存器。調用約定可能還規定某些寄存器是不用于還是用于特定目的。保存和恢復寄存器以及任何其他的特定處理,一般發生在子程序的入口和出口,并且被稱為序言和收尾程序代碼。在寄存器分配處理完成之后可使用附加信息。這樣的附加信息包括,與子程序有關的棧幀大小以及要保存和恢復的一組寄存器,但是附加信息不限于這些。
圖1是一個包括一個寄存器分配器和一個調用約定代碼發生器的編譯器的圖示。源代碼102作為輸入提供給編譯器106,該編譯器可能是一個優化編譯器。一般地,源代碼102包括一個對子程序110的調用108,以及與該調用108有關的輸入變量112。具體地說,相對于調用108規定輸入變量112的位置。
編譯器106所包括的一個寄存器分配器116用于分配源代碼102所使用的存儲器空間。在寄存器分配器116執行一個寄存器分配之后,調用約定代碼發生器118產生與源代碼102有關的序言和收尾程序代碼。以實例方式,如果在分配的任何部分使用任何被被調用者-保存寄存器,則將用于保存和恢復被被調用者-保存寄存器的代碼插入到序言和收尾程序代碼。序言和收尾程序代碼被包括在一個源代碼102的內部表示120中。一旦產生內部表示120,編譯器106從內部表示120創建機器指令124。
除一個子程序的調用約定之外,內部表示120包括復制、加載和存儲與變量定義和使用有關的指令。如圖所示,變量或值“c”和“d”存儲在一個棧內。如本領域技術人員所公知的,變量“d”必須在子程序調用過程中溢出。因此,變量“d”在子程序調用之后被再次從棧加載到“foo”。
參照圖2,該圖描述一個從包括調用約定的源代碼產生機器指令的過程。如本領域技術人員所公知的,過程202一般包括“虛擬”寄存器到“真實”寄存器的轉換。在分配之前,編譯器假設有不限數目的“虛擬”寄存器一起工作。分配器的工作是將無限制的虛擬寄存器映象到整個機器具有的非常有限的真實寄存器組。過程202在步驟204開始,在該步驟將調用約定代碼插入到編譯器所得到的源代碼。
一般地,在編譯器插入調用約定代碼或與一個子程序調用可能產生的約定有關的代碼之后,編譯器在步驟206研究調用約定。具體地說,編譯器研究與調用約定有關的輸入變量。在步驟208,確定輸入值或變量是否與一個寄存器或棧位置、例如棧頁槽有關。當確定輸入變量存儲在一個寄存器時,過程流進入步驟216,在這里將輸入值復制到一個虛擬寄存器。一般地,使用寄存器到寄存器復制命令完成該復制。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于太陽微系統有限公司,未經太陽微系統有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/00107019.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:圖像處理裝置和方法及提供媒體
- 下一篇:熒光燈及其制造方法





