2014-08-29 22 views
1

我正在研究閃存空間(用於固件存儲)和內存(用於執行)的產品都很貴。因此,我希望得到的ELF儘可能小,而不會明顯犧牲產品性能。該代碼被編譯爲ARM和Thumb的混合,基本上使用Thumb模式,當我可以擺脫它。我一直在調整編譯器/鏈接器選項以減小大小(優化空間,刪除未使用的函數等)。我注意到的一件事是,我得到了很多(大約180個)生成的遠程調用補丁,這佔用了一些空間。長話短說,任何人都知道一個很好的方法來最小化或消除這些補丁(大概是通過避免大多數/所有的遠程調用)?在我看來,應該有一種方法來重新組織和優化每個內存部分中所有內容的存儲/鏈接順序,因此調用是不必要的或者至少是最小化的。如何最小化或消除ARM/Thumb遠程調用修補?

編輯:我不再需要這個問題的答案。事實證明,這種產品中的遠端呼叫是不可避免的,因爲它們是ITCM和SRAM之間的呼叫所需要的(不幸的是,它們在地址空間中彼此遠離)。感謝您的評論和答覆。

+2

你可以給你正在使用的CPU以及什麼樣的編譯器和選項?例如,這是一個cortex-m還是一些較老的ARM-926?根據CPU功能的不同,「互通」會有所不同。例如,對於所有CPU類型,['blx'可能不可用](http://www.davespace.co.uk/arm/introduction-to-arm/interworking.html),編譯器將針對最壞的情況。 – 2014-08-30 00:44:34

回答

2

如果您使用的是RVCT鏈接器armlink,則可以嘗試documentaton for --sort中提到的不同部分排序算法。

+0

不使用該鏈接器,但如果我看起來像--sort = AvgCallDepth將是勝利者。感謝你的回答! (給你接受的答案。) – 2014-09-03 15:41:09

相關問題