Logo image
支援程式碼縮減最佳化之嵌入式編譯器設計
Thesis

支援程式碼縮減最佳化之嵌入式編譯器設計

Wang, Meng-Ting
Masters, 國立清華大學, 資訊工程學系
2010

Abstract

編譯器最佳化 程式碼縮減 低階虛擬機器 函式抽出 基因演算法 Compiler optimization Code size reduction Low level virtual machine Procedural abstraction Genetic algorithm
近年嵌入式系統程式與應用軟體的快速發展,使其具備更加完備且複雜的功能,也因此這些軟體有更高的計算資源需求。然而,消費性電子產品之設計考量到可攜性,朝輕量發展,體積亦愈趨縮小。這同時意味著此一嵌入式系統中之計算資源更有限,如記憶體、儲存空間、甚至是系統能源。為了讓嵌入式手持式設備上的軟體都能有效的利用有限的資源以發揮效用,在本論文中,我們以「在有限的效能影響下,最佳化程式碼大小」為研究目標,進行討論。我們提出應用基因演算法選擇、排列編譯器所提供之最佳化選項之機制,達到程式碼縮減之效果。本論文以低階虛擬機器(LLVM)之編譯器架構為主要研究環境,充分使用其所提供之最佳化技術。另外,為了增進低階虛擬機器之程式碼最佳化的效果,我們亦提出以抽出函式之方法,基於消除重複之程式碼片段,縮減程式碼之大小。並經由估算額外成本之方式,控制抽出函式所造成的額外效能影響。 將低階虛擬機器之中介表示式程式碼、轉換成ARM 平台之原生碼後,實驗結果顯示 使用基因演算法所挑選出之編譯器最佳化選項序列可將程式碼大小減至O0 所產生之84% ,O2 所產生之84%。實驗數據也指出經由我們所提出之抽出函式的作法,與以基因演算法挑選編譯器最佳化序列之機制整合,可以更進一步的縮減約10%之原生程式碼尺寸。最佳情況下,可以比O2 多縮減30%之程式碼大小。基本上,我們所提出的方法可以產生出比O0及O2 更佳的編譯結果,但所需之額外編譯時間在合理之範圍內。本論文進一步討論關於低階虛擬機器之函式呼叫協定,以及低階虛擬機器之中介表示式之靜態單一指值之型態,對於函式抽出效率上的影響。實驗結果亦指出,未來的研究可以朝向如何更精準的估算對程式碼大小最佳化之後,對於程式效能之改變發展。

Metrics

1 Record Views

Details

Logo image