• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    編譯系統以及編譯方法技術方案

    技術編號:9667732 閱讀:144 留言:0更新日期:2014-02-14 05:59
    本發明專利技術提供對一程序碼庫進行離線靜態分析的技術,來建立專為那程序碼庫特制的一編譯器以及一些工具。本發明專利技術在此所揭示的技術,可以讓此程序庫碼的總體資訊可以在編譯過程中,早點被采用,以便讓最佳化比較可能有更好的結果。此離線靜態分析可以產生一些特制化編譯組件,以便用來重建編譯器。這樣,隨著時間的演進,就可以得到專為此程序碼庫所特制的一編譯器。此編碼器在每次重建完成后,都會得到比較好的最佳化效果,而且也能繼續保持有效率的編碼時間。

    【技術實現步驟摘要】
    編譯系統以及編譯方法
    本專利技術相關于編譯(compilation)與軟件程序的最佳化(optimization),尤指對一程序碼庫(codebase)進行離線靜態分析,來重建一編譯器,使其特別適用于該程序碼庫的方法。如此,可以讓此程序碼庫的一些資訊可以在編譯過程中,早點被采用。好處是可以改善最佳化的效果,降低編譯所需的時間,也可以減少軟件開發所需的時間。
    技術介紹
    編譯器是電腦程序的一種,可以將高階程序語言所寫的原始碼,轉換成另一種低階程序語言,最終目的是產生一電腦可執行的程序。這里的低階程序語言一般指的是組合語言或是機械碼。在轉換高階程序語言的過程中,編譯器會判定原始碼語法上的正確性,產生目的碼的有效執行時間組織(efficientrun-timeorganization),并且依據連接器或是組合語言的規定,將輸出的檔案格式化。軟件程序的編譯大致上是先將軟件的每個原始碼檔案,或是依據原始碼格式所寫的每個物件,個別地經過一編譯器,來編譯成許多個處理器可執行的原生(native)檔案或是機械碼(machinecode)檔案。這些原生或是機械碼檔案接著將由一連結器處理,一起合并組合成為一完整的可執行程序。一個編譯器可以執行以下所有的或是部分的動作:語匯分析(lexicalanalysis)、前置處理(preprocessing)、語法分析(parsing)、語意分析(semanticanalysis)、程序碼產生(codegeneration)、以及程序碼最佳化(codeoptimization)。調整編譯器的輸出以最小化或最大化所產生的可執行程序的一些屬性,其所需要的程序,一般稱為程序碼最佳化。最常見的一些程序碼最佳化的目的,舉例來說,是將執行程序所需的時間最短化,或是將執行程序所要占用的存儲器量最小化。編譯器最佳化(compileroptimization)通常是以一連串的最佳化轉換(optimizingtransformation)來實現。每個最佳化轉換其實都是一種演算法(algorithm),可以將一個程序轉換成語意上等同且占用比較少資源的另一個程序。一種將可執行程序最佳化的已知作法,是讓編譯器對當下編譯的單一目的檔,在編譯的過程中,施行所有的最佳化轉換。舉例來說,一些編譯器所執行的最佳化操作包含有,基礎類別結合(basebinding)、函數復制(functioncloning)、以及部份求值(partialevaluation)。然而,以上所述的方法,每個目的碼檔案都是個別地被編譯器編譯而產生,所以都會碰到無法全域地知道整個程序狀況的問題。這也意味著,許多在編譯過程中執行的最佳化轉換操作,其實是需要一些在連結許多個目的碼檔案時才能夠獲悉的資訊。因此,盡管一編譯器可以仰賴某一部分特別片段資訊來執行一最佳化轉換操作,此編譯器無法得知并利用整個程序的總體特性(舉例來說,操作碼的分布情形、指令序列出現的頻繁程度等),來達到真正的最佳化。連結時間最佳化(link-timeoptimization),其施行的時機在于當程序的總體特性為已知,在連結操作時,對被編譯的程序進行處理的一種已知程序最佳化方案。因為連結的主要目的是要連結并合并所有的目的碼檔案,以成為一單一可執行檔案,所以此時可以得知整個程序的總體特性。連結時間最佳化可以對新連結成的檔案,進行各式各樣的最佳化處理。連結時間最佳化也可牽涉到重新編譯整個程序,只不過,這樣的方式將會消耗大量的運算處理。另一種已知的最佳化方案稱為跨程序最佳化(interproceduraloptimization,IPO),其亦有能力分析整個程序。IPO采用一些傳統的最佳化技巧,像是”行內化”(inline)程序、跨程序死碼刪除(interproceduraldeadcodeelimination)、跨程序常數傳遞(constantpropagation)、程序重組(procedurereordering)等等技巧,來嘗試降低或是刪除掉重復出現的運算、改善存儲器的使用、并簡化回圈步驟。IPO的動作可以在編譯過程中的任何一個階段進行,也可以當作連結時間最佳化的一部分。以上這些最佳化方案,都無法同時兼顧到1)快速的編譯時間與連結時間;以及2)較積極的程序總體最佳化。
    技術實現思路
    在此所揭示的技術提供了對一程序碼庫(codebase)進行離線靜態分析的技術,來建立專為那程序碼庫所特制的一編譯器以及一些工具。先前技術中的最佳化方案往往因為缺乏該程序碼庫的總體資訊,所以無法有效地發揮效能。如果采用比較積極的最佳化方案,已知技術也會遭受過長的編譯時間的問題。本專利技術在此所揭示的技術,可以讓此程序碼庫的一些總體資訊可以在編譯過程中,早點被采用,以便讓最佳化比較可能有更好的結果。舉例來說,可以在暫存器配置之前,就先找出一些共用的子序列,這樣,子序列才可能可以再利用;否則,因為這些共用子序列使用了不同的暫存器,將會被認為是不同的子序列。當先前技術已經到了極限時,本專利技術所提供的技術可能可以更進一步地縮小所產生的目的碼檔案大小。舉例來說,編譯器編譯當下程序碼庫的建構過程中,編譯器內的工具鏈(toolschain)會產生許多訊息,而靜態自動分析依據這些資訊,來找出當下程序碼庫中,一些可以重復使用的碼樣式(pattern)。以通用公共授權條款(GNU)的編譯器套件(GNUcompilercollection)為例,靜態自動分析先找出一些共用序列,然后產生組合源碼(assemblersourcecode)、區間程序碼樣式(peepholepattern)、以及C語言支援源碼,其中,組合源碼將給予庫存函數(libraryfunctions)所使用,區間程序碼樣式將會用來檢測應用程序碼中的子序列(subsequencecode)。靜態自動分析程序收集這些資訊,來建構一些特制化的編譯組件。這些特制化編譯組件可以用來重建既有的編譯器與編譯程序庫。此外,靜態自動分析程序也收集函數呼叫行的位置與出現次數的相關資料,以及一些在之后編譯過程中可能可以用來協助判定的一些程序架構資訊。在之后的編譯過程中,這個特制的編譯器,可供找出共用序列的出現位置,針對這些共用序列發出對應的程序庫呼叫,并且運用既有的最佳化動作,來持續地最佳化編譯程序庫呼叫中的程序碼檔案。這種在編譯過程中找出可重復使用的碼樣式的方法,對于整個編譯與連結時間上,僅僅會增加一點點的時間成本;但是,這方法卻可以讓碼樣式的比對,能夠脫離暫存器配置所可能產生的限制。當下程序庫碼的基礎架構,可以用來做碼樣式的辨認,以及更進一步的最佳化。附圖說明圖1顯示已知一編譯程序的流程圖。圖2顯示依據本專利技術所實施的一編譯程序流程圖。圖3為整個程序的靜態分析的流程圖。圖4顯示編譯器重建的流程圖。主要元件符號說明100編譯程序110原始碼檔案120編譯器130、140目的碼檔案150連結器160連結時間最佳化170可執行程序200編譯程序流程210原始碼檔案220最佳化編譯器230中介表示240靜態分析250特制函數程序庫260特制化編譯組件270最佳化編譯器重建程序280目的碼檔案285連結器290可執行程序310語法分析器320共用子序列330子序列庫340程序碼轉換規則本文檔來自技高網
    ...
    編譯系統以及編譯方法

    【技術保護點】
    一種編譯系統,用以編譯在一程序碼庫中的一原始碼檔案,該編譯系統包含有:一最佳化編譯器,為該程序碼庫而特制,編譯該原始碼檔案,以輸出多個目的碼檔案以及據以產生一中介表示;以及一程序分析器,用以分析該中介表示,以獲得并儲存該程序碼庫的多個特性以用于該程序碼庫的一后續編譯程序中。

    【技術特征摘要】
    2012.07.18 EP 12176842.81.一種編譯系統,用以編譯在一程序碼庫中的一原始碼檔案,該編譯系統包含有:一最佳化編譯器,為該程序碼庫而特制,編譯該原始碼檔案,以輸出多個目的碼檔案以及據以產生一中介表示,其中該中介表示作為整個程序的靜態分析的輸入;以及一程序分析器,用以分析該中介表示,以獲得并儲存該程序碼庫的多個特性,從這些特性中獲得多筆可重復使用的資源以用于該程序碼庫的一后續編譯程序中。2.如權利要求1所述的編譯系統,其特征在于,這些多筆可重復使用的資源包含有關于多個共用子序列的資訊,這些共用子序列于該程序碼庫中出現了許多次。3.如權利要求2所述的編譯系統,其特征在于,另包含有:一連結器,將這些目的碼檔案連結,而產生一可執行程序,且該連結器包含有多個連結器程序庫。4.如權利要求3所述的編譯系統,其特征在于,由該程序分析器所產生有關于這些共用子序列的該資訊另用以產生一特制化函數程序庫,其實行這些共用子序列,以及,于該后續編譯程序中,該連結器采用該特制化函數程序庫以及這些連結器程序庫,以連結這些目的碼檔案。5.如權利要求4所述的編譯系統,其特征在于,另包含有由該程序分析器所產生的多個特制化編譯組件,用來找出該原始碼檔案中的這些共用子序列,其中,這些特制化編譯組件被用來更新該最佳化編譯器,以便于該程序碼庫的該后續編譯程序中使用。6.如權利要求1所述的編譯系統,其特征在于,該程序碼庫的這些特性包含有關于多個最佳化動作的歷史記錄,該歷史記錄被該程序分析器所分析供決定每一個最佳化動作是否對該程序碼庫中的多個函數中的任何一個具有影響。7.如權利要求6所述的編譯系統,其特征在于,依據每一個最佳化動作是否對該程序碼庫中的至少一個函數具有影響,該最佳化編譯器決定是否跳過任何一個最佳化動作。8.如權利要求1所述的編譯系統,其特征在于,這些特性包含有多個函數呼叫行所在位置的資訊,這些函數呼叫行呼叫該程序碼庫中數個函數的至少其中之一。9.如權利要求8所述的編譯系統,其特征在于,在該最佳化編譯器編譯該程序碼庫中的這些函數時,該最佳化編譯器使用該多個函數呼叫行所在位置的該資訊,來決定是否將...

    【專利技術屬性】
    技術研發人員:柯林·A·麥克艾文
    申請(專利權)人:開曼晨星半導體公司晨星半導體股份有限公司晨星軟件研發深圳有限公司
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 四虎成人精品无码| 久久精品无码av| 亚洲av无码成人精品国产| 免费无码不卡视频在线观看| 久久久久亚洲Av片无码v| 小泽玛丽无码视频一区| 老子午夜精品无码| 久久久无码人妻精品无码| 亚洲av福利无码无一区二区| 久久Av无码精品人妻系列 | 免费无码国产在线观国内自拍中文字幕 | 伊人久久综合无码成人网| 无码av大香线蕉伊人久久| 内射精品无码中文字幕| 精品亚洲av无码一区二区柚蜜 | 久久无码AV中文出轨人妻| 亚洲AV无码一区二区三区人| 日韩人妻无码一区二区三区综合部| 国产精品无码免费播放| 人妻丰满熟妇AV无码区乱| 韩国免费a级作爱片无码| 久久美利坚合众国AV无码| 亚洲中文字幕无码爆乳app| 亚洲AV无码片一区二区三区| 亚洲av日韩av无码| 亚洲成AV人片在线观看无码 | 亚洲国产成人无码AV在线| 亚洲VA中文字幕不卡无码| 精品无码综合一区| 亚洲 无码 在线 专区| 国产人成无码视频在线观看| 韩国精品一区二区三区无码视频| 午夜福利无码一区二区| 无码一区二区三区中文字幕| 成人免费一区二区无码视频| 精品无码国产AV一区二区三区 | 永久无码精品三区在线4| 97无码免费人妻超级碰碰碰碰 | 无码无套少妇毛多69XXX| 无码国模国产在线观看| 国产成人无码a区在线观看视频免费 |