目標代碼
出自 MBA智库百科(https://wiki.mbalib.com/)
目標代碼(Object Code)
目錄 |
什麼是目標代碼[1]
目標代碼是指源代碼經過編譯程式產生的能被CPU直接識別的二進位代碼。
目標代碼的形式[2]
目標代碼生成是以中間代碼作為輸入,將其轉換成特定機器的機器語言或彙編語言作為輸出。在此以四元式序列作為它的加工對象,輸出目標代碼的形式有三種:具有絕對地址的機器語言程式,具有相對地址的機器碼程式和彙編指令程式。
具有絕對地址的機器語言程式在存儲空間中有固定的存儲位置,一旦產生此種形式的目標代碼之後,便可立即執行,因此這種形式最為迅速有效,但它並不靈活,不適合大型程式。
具有相對地址的機器語言程式由若幹個目標模塊組成,各個模塊中都包含目標程式中的一部分代碼,可將它們裝人到存儲空間的任何位置,然後由連接裝配程式將它們連接在一起之後執行。顯然,連接裝配程式增加了開銷,但這種形式有較大的靈活性,所以為許多編譯程式所採用。
目標代碼生成程式可以產生彙編語言形式的目標代碼,這種形式在實現上要比前兩種形式容易。當然,這種形式的目標代碼還需經彙編後才能成為可執行代碼。
目標代碼的生成[3]
目標代碼生成是編譯程式的最後一個工作階段,其任務是把經優化處理之後的中間代碼變換成特定機器上的機器語言程式或彙編語言程式,實現最終的翻譯工作。由於目標語言依賴於硬體系統,因而如何充分利用現有的寄存器以節省訪問記憶體的時間,合理地選擇執行速度快的指令,生成儘可能短且有效的目標代碼是這個階段考慮的主要問題。
如果代碼生成程式以四元式形式的中間代碼序列作為輸入,在其生成目標代碼時,可假定每個四元式中的運算符及運算對象的數據類型均已知道,所需的全部類型轉換操作均已在中間代碼中得到體現。此外,如果出現在程式中的全部符號名運行時所需的存儲空間均已得到分配,它們所在的數據區編號及相對地址已分別填人符號表各相應登記項欄中。所以在四元式中,僅出現符號名在符號表中登記項的序號。