淡江大學覺生紀念圖書館 (TKU Library)
進階搜尋


下載電子全文限經由淡江IP使用) 
系統識別號 U0002-1802200811014300
中文論文名稱 Java混階編譯器
英文論文名稱 Java Mixed-Level Compiler
校院名稱 淡江大學
系所名稱(中) 資訊管理學系碩士班
系所名稱(英) Department of Information Management
學年度 96
學期 1
出版年 97
研究生中文姓名 楊哲豪
研究生英文姓名 Che-Hao Yang
學號 694520015
學位類別 碩士
語文別 中文
口試日期 2008-01-31
論文頁數 98頁
口試委員 指導教授-廖賀田
委員-張昭憲
委員-高明達
委員-王建民
中文關鍵字 Java  J2ME  混階語法  編譯器  最佳化 
英文關鍵字 Java  J2ME  mixed-level  compiler  optimization 
學科別分類 學科別社會科學管理學
學科別社會科學資訊科學
中文摘要 J2ME(Java 2 Platform Micro Edition)被廣泛應用在手機市場。可攜性在手機市場是很重要的訴求,它讓手機軟體開發廠商節省開發時間與金錢,軟體開發者透過J2ME只需撰寫一套Java應用程式,便可在不同平台的手機上執行。
J2ME提供KVM(Kilobyte Virtual Machine)讓資源受限的消費性電子產品執行Java類別檔,但因記憶體容量的限制以致無法運用JIT(Just-In-Time)技術來提升效能,使得在效能上為人詬病。雖然直接將Java原始碼編譯成處理器(Processor)之原生機器碼(Native Machine Code)可以提升執行之效能,但卻喪失了可攜性。
本論文所提出的混階編譯器,讓程式員可在Java原始碼內同時撰寫高階語法與JAsm語言(Java Assembly Language)。混階原始碼經過剖析與連結成為混階語法樹,接著將混階語法樹生成JAsm組譯碼,最終輸出類別檔。
實證證實經過混階語法的引用,使得程式在J2ME之執行時效能有顯著的增進。因此程式員可以透過混階編譯器,依實務上之需求針對程式碼片段用JAsm語法撰寫,使混階編譯後的類別檔在J2ME之執行效能上能有所提升。
英文摘要 In recent years J2ME(Java 2 Platform Micro Edition) has been wildly applied in cell phone market. Therefore, J2ME’s ability to work with different platforms is important in the fragmented cell phone market. This capability lets a Java-enabled phone run applications and services written for other mobile platforms and also lets software vendors save time and money by writing a single, Java-based version of an application to run on multiple platforms.
J2ME platform provides KVM(Kilobyte Virtual Machine) , which is an implementation optimized for use on small devices. However, limited memories constraints make JIT techniques untenable. Although it can compile java source code to native machine code for performance, it will loose the portability.
We have developed a Java mixed-level compiler for compiling Java high-level language and JAsm(Java Assembly Language). The programmer can use mixed-level language to optimize original source code. The compiler translates mixed-level source code to mixed-level syntax tree. Then, it transforms mixed-level syntax tree into Java assembly code, and writes out the class file.
Based on the experimental results, it can be seen that our approach can achieve better performance. Consequently, the programmer can use JAsm to optimize java source code.
論文目次 1 緒論 1
1.1. 研究背景 1
1.2. 相關研究 2
1.3. 研究動機與目的 4
1.4. 論文組織 4
2. 系統概觀 5
2.1. 混階語法 5
2.2. JAsm語法 6
2.3. 混階語法樹 6
2.4. 系統架構 12
2.5. 剖析與連結 13
3. 生成JAsm組譯碼 14
3.1. JAsm組譯碼 14
3.2. 運算式生成JAsm組譯碼 14
3.3. 敘述生成JAsm組譯碼 33
3.4. JAsm標籤索引值與堆疊容量之計算 46
3.5. 寬指令之處理 47
4. 生成Java位元組碼 49
4.1. JVM概觀 49
4.2. 輸出類別檔 55
4.2.1. 類別介面節點之轉換 55
4.2.2. CorINode之writeClassBytes實作 58
4.2.3. JAsmFiledNode之toFile實作 59
4.2.4. JAsmMethodNode之toFile實作 60
5. 實例與效能測試 62
5.1. 實例一:Quick Sort之實作改良 62
5.2. 實例二:Moving Fractal Tree之實作改良 64
6. 結論與系統限制 72
6.1. 結論 72
6.2. 系統限制 72
參考文獻 73
附錄一 JAsm語法與內部資料結構 75
附錄二 Moving Fractal Tree最佳化及測試之流程 84
附錄三 JAsm組譯碼資料結構 88
附錄四 類別介面 欄位 方法節點之資料結構 97


圖目錄
圖2.1 混階語法與Java語法之比較圖 6
圖2.2 程式庫oai.lex類別繼承圖 7
圖2.3 程式庫oai.tree.def類別繼承圖 8
圖2.4 程式庫oai.tree.stmt類別繼承圖 9
圖2.5 程式庫oai.tree.jasm類別繼承圖 10
圖2.6 程式庫oai.tree.exp類別繼承圖 11
圖2.7 系統架構圖 12
圖2.8 剖析與連結之處理流程 13
圖3.1 介面Evaluable實例之語法樹 15
圖3.2 介面LValue實例之語法樹 16
圖3.3 static欄位實例之語法樹 17
圖3.4 non-static欄位實例之語法樹 18
圖3.5 陣列建立算式之語法樹結構 19
圖3.6 陣列建立算式實例之語法樹 20
圖3.7 陣列存取算式之語法樹結構 20
圖3.8 陣列存取算式實例之語法樹 21
圖3.9 後置加法運算符號之語法樹結構 22
圖3.10 後置加法運算式實例之語法樹 23
圖3.11 前置減法運算式實例之語法樹 24
圖3.12 一元減法運算符號之語法樹結構 24
圖3.13 邏輯運算子'!'實例之語法樹 25
圖3.14 一元運算符號實例之語法樹 26
圖3.15 乘法運算符號之語法結構 28
圖3.16 二元運算符號實例之語法樹 31
圖3.17 條件運算式之語法結構 31
圖3.18 三元運算式實例之語法樹 32
圖3.19 區塊敘述之語法樹結構 33
圖3.20 區塊敘述與break敘述實例之語法樹 34
圖3.21 區域變數宣告敘述之語法樹結構 35
圖3.22 區域變數宣告敘述實例之語法樹 36
圖3.23 算式敘述之語法樹結構 36
圖3.24 算式敘述實例之語法樹 37
圖3.25 for敘述之語法樹結構 37
圖3.26 for敘述與continue敘述實例之語法樹 39
圖3.27 if敘述之語法樹結構 40
圖3.28 if敘述實例之語法樹 41
圖3.29 switch敘述實例之語法樹 43
圖3.30 例外區塊敘述之語法樹結構 44
圖3.31 例外區塊敘述實例之語法樹 45
圖4.1 類別檔案格式 49
圖4.2 CorINode結構定義圖 50
圖4.3 堆疊指令示意圖 51
圖4.4 JVM執行系統的方法堆疊框架 52
圖4.5 例外區塊示意圖 54
圖5.1 方法swap1與改良後之方法swap2 63
圖5.2 陣列長度固定,執行次數不定之執行時間折線圖 64
圖5.3 執行次數固定,陣列長度不定之執行時間折線圖 64
圖5.4 Moving Fractal Tree 65
圖5.5 Moving Fractal Tree在模擬器上之執行畫面 70


表目錄
表3.1 型態與load指令 store指令對照表 19
表3.2 型態與load指令 store指令對照表 21
表3.3 型態與add指令之對照表 22
表3.4 型態與sub指令之對照表 23
表3.5 型態與neg指令之對照表 25
表3.6 型態與xor指令之對照表 26
表3.7 型態與轉型指令之對照表 27
表3.8 型態與mul指令之對照表 28
表3.9 型態與算式運算指令之對照表 28
表3.10 運算符號與比較運算指令之對照表 29
表3.11 運算符號與比較運算指令之對照表 29
表3.12 運算符號與位元運算指令之對照表 30
表4.1 類別修飾詞與標籤值之對照表 55
表4.2 欄位修飾詞與標籤值之對照表 56
表4.3 欄位描述符號轉換表 56
表4.4 方法修飾詞與標籤值之對照表 57
表4.5 方法描述符號轉換表 58
表4.6 ClassInfo之內部結構 58
表4.7 Utf8Info之內部結構 59
表4.8 ConstantValueAttr之內部結構 59
表4.10 CodeAttr之內部結構 61
表4.11 ExceptionsAttr之內部結構 61
表5.1 方法rotateEntireFigureWithQuaternions之效能比較表 71
表5.2 應用程式之整體效能比較表 71
參考文獻 [1] 郭肇安,『Java語法樹與直譯機制』,淡江大學資訊管理所碩士論文,Jun 2005。
[2] A.V. Aho, R. Sethi, J.D. Ullman, “Compilers, Principles, Techniques, and Tools,” Addison-Wesley, 1986.
[3] C-HA. Hsieh , M.T. Conte , T.L. Johnson , J.C. Gyllenhaal , W-MW. Hwu, “Optimizing NET Compilers for Improved Java Performance,” Computer, v.30 n.6, p.67-75, June 1997.
[4] D. Low, “Protecting Java Code Via Code Obfuscation,” ACM Crossroads 4 3, pp. 21–23, 1998.
[5] G. Lawton, "Moving Java into Mobile Phones," Computer, vol. 35, no. 6, pp. 17-20, June 2002.
[6] I.H. Kazi, H.H. Chen, B. Stanley, and D.J. Lilja, “Techniques for Obtaining High Performance in Java Programs,” ACM Computing Surveys, Vol. 32, No. 3, pp. 213–240, September 2000.
[7] J. Gosling, B. Joy and G. Steele, “The Java Language Specification, 3nd ed.,” Addison-Wesley, 2005.
[8] J. L. Bentley and M. Douglas McIlroy, “Engineering a Sort Function”, Software-Practice and Experience, vol. 23(11), pp. 1249-1265 , November 1993.
[9] J. Meyer, Jasmin Home Page, http://jasmin.sourceforge.net/.
[10] K. Arnold and J. Gosling, “The Java Programming Language, 4th ed.,” Addison Wesley, 2006.
[11] M. Cierniak , W. Li, “Briki: an Optimizing Java Compiler,” Proceedings of the 42nd IEEE International Computer Conference, p.179, February 23-26, 1997.
[12] S. Helal, “Pervasive Java,” IEEE - Pervasive Computing, 2002.
[13] T. Lindholm and F. Yellin, “The Java Virtual Machine Specification, 2nd ed.,” Addison Wesley, 1999.
[14] J.A. Gonzalez Rodriguez, “A tutorial and recipe for moving fractal trees, ” Computers & Graphics, Vol 22, No. 2 - 3, pp. 301 - 305, 1998.
[15] J.A. Gonzalez Rodriguez, Moving Fractal Tree Home Page, http://www.josechu.com/moving_fractal/index.htm
論文使用權限
  • 同意紙本無償授權給館內讀者為學術之目的重製使用,於2008-02-19公開。
  • 同意授權瀏覽/列印電子全文服務,於2008-02-19起公開。


  • 若您有任何疑問,請與我們聯絡!
    圖書館: 請來電 (02)2621-5656 轉 2281 或 來信