[問題]不同的bin檔案如何互相呼叫其中函式

看板ASM (組合語言)作者 (偉少)時間14年前 (2011/03/22 18:23), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
請教高手們 目前我正在撰寫ARM的C code 針對目前的產品有一些需求如下: 因為必須將程式區分成system部分跟library部分 system被包在一個bin中 負責執行整個系統流程 包括透過usb與pc的應用程式互動 然後如果有需要必須去呼叫在另外一個bin檔案內的其他functions 為什麼要分成兩個bin是因為library部分要給其他人寫 且因為不管是system 或是 library出錯只要個別編譯就好 如果包成1個bin 萬一其中出錯則都必須重新編譯 library部分可能會有很多的bin檔案 分別對應到不同的需求 system只要動態載入需要的library到sdram執行即可 我用的是iar EWARM CPU是ATMEL AT91SAM9G45 問題來了 現在我要怎麼樣才能正確呼叫到在另一個bin中的function 我想過用1個辦法 就是用固定位址的方式來作 在library中所有的function 都用@ 定義一個固定的位址 像這樣 void a()@"FUNC" 然後在iar link配置檔中定義func在固定的位址中 接著在system中利用h檔預先定義所有包在另一個bin中的function中的固定位址 利用函式指標直接呼叫 可是我在想這樣做真的可以作嗎? 應該還得考慮到將stack定義到同一段位址中 想很久不知道能不這樣做 請大家指點我一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.22.55

03/22 22:04, , 1F
我的想法是建一個lookup table在library
03/22 22:04, 1F

03/22 22:05, , 2F
system開始之後dynamic check lookup table,(looping)
03/22 22:05, 2F

03/22 22:05, , 3F
然後把所有的functions都加到function pointer
03/22 22:05, 3F

03/22 22:06, , 4F
system要用時,就直接call function pointer
03/22 22:06, 4F

03/22 22:06, , 5F
另,如果function pointer = NULL,你就知道這個function
03/22 22:06, 5F

03/22 22:07, , 6F
還沒implement
03/22 22:07, 6F

03/23 12:40, , 7F
感謝1樓的回答
03/23 12:40, 7F

05/25 20:59, , 8F
你寫的方式是可行的 我有用過 但是回去要很小心
05/25 20:59, 8F
文章代碼(AID): #1DY7Yikj (ASM)
文章代碼(AID): #1DY7Yikj (ASM)