DSP編程技巧之13-揭開(kāi)編譯器神秘面紗之鏈接器的基本選項

發(fā)布時(shí)間:2014-9-29 10:44    發(fā)布者:看門(mén)狗
關(guān)鍵詞: DSP , cmd , 寄存器
作者:paradoxfx 來(lái)源:電子產(chǎn)品世界

  在我們對DSP編程的時(shí)候,相信沒(méi)有人會(huì )把所有的代碼都放在同一個(gè)源文件里面:光各種寄存器的初始化代碼就有幾百上千行了,再加上我們自己書(shū)寫(xiě)的代碼,想想假如一個(gè).c文件里面有一萬(wàn)行,該如何管理、調試呢?所以要按照功能、寄存器分類(lèi)等進(jìn)行劃分,這樣一個(gè)工程就包含了很多的頭文件、源程序等等,每個(gè)源程序經(jīng)過(guò)編譯、匯編之后都會(huì )產(chǎn)生單獨的目標文件。因為對于程序的任何一點(diǎn)修改,都需要編譯器進(jìn)行編譯,如果每次都把所有的程序進(jìn)行重新編譯的話(huà),是對時(shí)間和資源的極大浪費:特別是那些基于Eclipse的編譯環(huán)境,因為基于Java這樣的技術(shù),本身就很慢,如果一次編譯的文件很多,編譯過(guò)程是非常痛苦的等待,甚至經(jīng)常懷疑編譯環(huán)境是不是已經(jīng)掛掉了?所以為了提高效率,我們可以使用增量編譯技術(shù)只對有修改的文件進(jìn)行重新編譯和匯編,而沒(méi)有修改的則不需要更新目標文件。但是因為編譯器和匯編器對每個(gè)源文件是單獨匯編的,它們并不知道某個(gè)模塊中的數據和程序相對于另一個(gè)模塊而言,具體位置在哪里,所以接下來(lái)我們就需要使用鏈接器把所有的目標文件給“拼接”起來(lái),最終生成一個(gè)可以獨立運行的文件,即可執行文件。它的功能包括三個(gè)主要的步驟:

  (1)將代碼和數據放入“假想”中的內存:鏈接器基于.cmd文件中對存儲器地址的劃分,按照不同的段把代碼和數據分別裝入對應的地址中;當然這完全是在電腦上完成的,不需要實(shí)際的DSP和RAM“出面”。

  (2)為數據和指令分配內存地址:最簡(jiǎn)單的例子,為函數中斷的入口制定一個(gè)地址,這樣在進(jìn)中斷的時(shí)候,程序指針直接跳轉到中斷入口的地址就行了。

  (3)修改內部和外部的引用:鏈接器使用每個(gè)目標文件中的重定位信息和符號表,來(lái)解析某個(gè)目標文件中未定義的符號,因為它有可能是在別的目標文件中定義的。

  為了更好地理解鏈接器的行為,我們就需要了解一下它的配置選項。鏈接器的配置選項也很多,但是和程序優(yōu)化的那些選項相比,其含義要更容易理解一些。表1是鏈接器的最基本選項,定義了鏈接器正常工作所必須的參數。



  鏈接器的文件搜索選項則是鏈接器用來(lái)尋找文件時(shí)使用的,例如查找某個(gè)和FPU運行有關(guān)的浮點(diǎn)庫函數,如表2所示。







本文地址:http://selenalain.com/thread-133211-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页