Ⅰ 什麼是目標代碼
目標代碼是指源代碼經過編譯程序產生的能被CPU直接識別的二進制代碼。
目標代碼的形式
目標代碼生成是以中間代碼作為輸入,將其轉換成特定機器的機器語言或匯編語言作為輸出。在此以四元式序列作為它的加工對象,輸出目標代碼的形式有三種:具有絕對地址的機器語言程序,具有相對地址的機器碼程序和匯編指令程序。
具有絕對地址的機器語言程序在存儲空間中有固定的存儲位置,一旦產生此種形式的目標代碼之後,便可立即執行,因此這種形式最為迅速有效,但它並不靈活,不適合大型程序。
具有相對地址的機器語言程序由若干個目標模塊組成,各個模塊中都包含目標程序中的一部分代碼,可將它們裝人到存儲空間的任何位置,然後由連接裝配程序將它們連接在一起之後執行。顯然,連接裝配程序增加了開銷,但這種形式有較大的靈活性,所以為許多編譯程序所採用。
目標代碼生成程序可以產生匯編語言形式的目標代碼,這種形式在實現上要比前兩種形式容易。當然,這種形式的目標代碼還需經匯編後才能成為可執行代碼。
目標代碼的生成
目標代碼生成是編譯程序的最後一個工作階段,其任務是把經優化處理之後的中間代碼變換成特定機器上的機器語言程序或匯編語言程序,實現最終的翻譯工作。由於目標語言依賴於硬體系統,因而如何充分利用現有的寄存器以節省訪問內存的時間,合理地選擇執行速度快的指令,生成盡可能短且有效的目標代碼是這個階段考慮的主要問題。
如果代碼生成程序以四元式形式的中間代碼序列作為輸入,在其生成目標代碼時,可假定每個四元式中的運算符及運算對象的數據類型均已知道,所需的全部類型轉換操作均已在中間代碼中得到體現。此外,如果出現在程序中的全部符號名運行時所需的存儲空間均已得到分配,它們所在的數據區編號及相對地址已分別填人符號表各相應登記項欄中。所以在四元式中,僅出現符號名在符號表中登記項的序號。
參考文獻
龍馬工作室編著.第8章 CSS+Div常見用法 Dreamweaver CS5從新手到高手.人民郵電出版社,2011.02.
張晶主編.第11章 目標代碼生成 編譯原理.哈爾濱工程大學出版社,2011.08.
王麗芳,張靜,李富萍等編著.第三章 程序設計語言和方法 計算機科學導論.清華大學出版社,2012.01.
Ⅱ 編譯原理sym=dplus什麼意思
編譯原理其實就是將高級語言翻譯成計算機語言(即計算機所能識別的二進制代碼)所遵循的規律,讓電腦可以懂得高級語言所表達的東西,內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。編譯原理是計算及專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。編譯原理及技術從本質上來講就是一個演算法問題而已,當然由於這個問題十分復雜,其解決演算法也相對復雜。 我們學的數據結構與演算法分析也是講演算法的,不過講的基礎演算法,換句話說講的是演算法導論,而編譯原理這門課程講的就是比較專註解決一種的演算法了。
Ⅲ 哪裡可以下載《編譯原理》電子書
你需要開發環境,可以用集成的,也可以獨立的。
windows下的話,一般用集成開發環境(IDE)。
微軟的visual studio應該說最好了。我用2005版的,資料相對多一些。2008版的是為vista做的。你可以用那個體驗版/學生版的,功能少一些,但對初學者來說足矣,免費。專業版和團隊版的功能多、收費,網上有序列號。
devcpp是個相對很小的集成開發環境。程序簡單的話,用它也可以。
linux下可以用命令行下的gcc,gdb,也有anjuta,netbeans,eclipse等IDE。
當然,你最好再下載C++的電子書如:
Visual C++ 2005 入門經典
C++面向對象程序設計基礎教程
C++參考大全第四版
C++高級編程