Re: [問題] Keil C 的 .m51 ,code memery ***GAP***

看板ASM (組合語言)作者 (甘願為妳~)時間16年前 (2008/08/10 16:04), 編輯推噓3(305)
留言8則, 2人參與, 最新討論串2/4 (看更多)
我說清楚一點好了: main.c ============= func1() func2() USB.c ============= USB_Func1(); USB_Func2(); ICE.c ============= ICE_Main(); ReturnHost(); ICE_SNL200.c ============= InitSNL200(); RunSNL200(); 今天我想把它 link 成: -------------------------------C:0x0000 ?PR?*?MAIN ?PR?*?USB -------------------------------C:0x2000 ?PR?ICE_MAIN?ICE(0x2000) ?PR?*?ICE ?PR?*?ICE_SNL200 ?CO?ICE ?CO?ICE_SNL200 -------------------------------C:0xFFFF 於是,我在BL51 設定 CODE(?PR?*?ICE(0x2000), ?PR?*?ICE_SNL200, ?CO?ICE, ?CO?ICE_SNL200) 發現BL51 會按照function的位置排列,導致 ***GAP***會變多 有沒有辦法0x2000之後,BL51也可以很Smart的幫你排列Code,而不要按照func位置排呢? -- ████████████████ █ █████████████ ██████████████ █ ██████████████ ██████████████ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.225.153

08/10 18:04, , 1F
沒有非常懂您的意思... 不過keil C 會先排有設定的 function
08/10 18:04, 1F

08/10 18:05, , 2F
其他的就依照 function code size 大排到小,一個接一個排
08/10 18:05, 2F

08/10 18:08, , 3F
您前一篇文章裡,GAP 的好像都在整數位置: 2800H, 3000H...
08/10 18:08, 3F

08/10 18:10, , 4F
似乎有 link directive 在作用。去掉它們,func就會連起來了
08/10 18:10, 4F

08/10 21:35, , 5F
你說去掉它們是什麼意思呢?感謝Z大拔刀相助:)
08/10 21:35, 5F
※ 編輯: ast9869 來自: 123.110.225.153 (08/10 22:13)

08/10 22:28, , 6F
一定有一些設定導致編譯器把 function 放在 800H 邊界上
08/10 22:28, 6F

08/10 22:29, , 7F
找出那些設定(ex. link檔)取消掉,code space就不會斷斷續續
08/10 22:29, 7F

08/10 22:29, , 8F
找到了,謝謝z大的指點。
08/10 22:29, 8F
文章代碼(AID): #18dg48O1 (ASM)
文章代碼(AID): #18dg48O1 (ASM)