代碼生成

代碼生成

目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析后或優化后的中間代碼變換成目標代碼。

簡介


問題一

目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析后或優化后的中間代碼變換成目標代碼。目標代碼有三種形式:
① 可以立即執行的機器語言代碼,所有地址都重定位(不包含沒有定位的);
② 待裝配的機器語言模塊,當需要執行時,由連接裝入程序把它們和某些運行程序連接起來,轉換成能執行的機器語言代碼;
③ 彙編語言代碼,須經過彙編程序彙編后,變成為可執行的機器語言代碼。

問題二

目標代碼生成階段應考慮直接影響到目標代碼速度的三個問題:一是如何生成較短的目標代碼;二是如何充分利用計算機中的寄存器,減少目標代碼訪問存儲單元的次數;三是如何充分利用計算機指令系統的特點,以提高目標代碼的質量。

編譯


編譯(compilation , compile) 1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。 2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進位語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進位的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。

目標代碼


目標代碼(object code)指計算機科學中編譯器或彙編器處理源代碼后所生成的代碼,它一般由機器代碼或接近於機器語言的代碼組成。

延伸


如果編譯過程中發現源程序有錯誤,編譯程序應報告錯誤的性質和錯誤的發生的地點,並且將錯誤所造成的影響限制在儘可能小的範圍內,使得源程序的其餘部分能繼續被編譯下去,有些編譯程序還能自動糾正錯誤,這些工作由錯誤處理程序完成。

20個代碼生成框架


CodeSmith
MyGenerator
NHibernate.
CodePlus
CodeMaker
EntitysCodeGenerate
等等

代碼生成器


動軟代碼生成器

動軟代碼生成器是完全自主知識產權研發的為軟體項目開發設計的自動代碼生成器,也是一個軟體項目智能開發平台,其本身亦是由計算機語言開發的軟體.

Java代碼生成器

這個工具能夠讀取資料庫表結構,通過對欄位類型、名稱等分析得到需要的各種變數,根據模板生成相應的pojo類、hibernate的xml配置文件、dao和service的介面和類。
Table:根據表結構建立的對象。
Column:根據表中每列建立的對象。
Generator:生成器核心類,主要負責根據表對象和讀取FreeMarker模板生成最後的java代碼文件。
GeneratorControl:控制生成過程等的一些參數,例如文件是否覆蓋、文件編碼等。
GeneratorProperties:讀取配置文件的類,配置文件包括資料庫連接信息和一些基本的參數配置。