工具/软件:TI C/C++编译器
您好,
需要有关链接器放置顺序的说明:
指令,联合,拆分,组,内存, 等
如果我们已经有一个链接且完全重新定位的.out文件,其中有FUNA@addrA, funcB@addrB,… funy@addrY,它们位于对象文件Old_obj中。
然后我们编译一个新的funZ(),它引用了以前的一些函数,提供了必要的声明,并编译到一个未重定位的Z.obj文件。
然后,我们将Z.OBJ添加到以前的项目中,并将其与现有的Old_obj链接(不是部分链接,因为我们不会与包含重定位信息的.out文件重新链接)。 所以唯一的区别是我们添加了Z.OBJ,它只具有需要重新定位的外部引用。
然后,{addrA,…}中的任何一个 ADDRY}更改?
不确定这一点,因为我们没有链接器来源,并且存在怀疑:
- 在http://processors.wiki.ti.com/index.php/Program_Cache_Layout#--preferred_order_Option中,C6000的v7有“加权调用图(WCG)”概念,它在涉及缓存等时创建首选放置顺序
- 在旧版本的链接程序中,总是有“--preferred_order”选项。
在这种简单的情况下,我们不允许使用任何一种(new funz()从不更改任何呼叫计数等)
- 准确描述功能和符号的分配方式,何时指定所有章节/内存。 假设我们有一个以0xC0万开头的.text部分,首先从哪些函数分配obj?
- DSP和其他处理器之间是否有区别? DSP编译器编写者可能会考虑更多的因素,如内存层次结构与性能,因此分配算法是否已更改?
- 链接和符号解析是递归的,这是显而易见的。 放置是否只是简单的旧线性放置(例如0xC0万),一个接一个地进行,并且从不回绕?
戴夫