完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好!我想发布一个简单的问题(也许),但是对于XC16这样的智能系统来说是至关重要的。为什么在主代码中没有使用的全局函数像其他的那样编译和链接?即使我启用了所有的优化('s'),我也不知道gcc编译器和链接器工作得有多深,但我认为这些函数不应该出现在程序内存中,因为列表文件会生成这些函数。
|
|
相关推荐
14个回答
|
|
|
它非常简单,而且对于我所知道的所有编译器都是有效的(这个数字从8到32位不等):在源文件(.c,.h,无论如何)中“做什么”都被编译和链接。xplicit引用(尽管这被认为是“坏样式”),因此编译器和链接器都不能执行100%的检查。带有lib的事情是不同的:来自lib的函数仅链接到ifa)referencedb)由链接器控制列表中的名称给出。这就是事情的工作方式。
|
|
|
|
|
|
|
|
|
你会怎么做?
|
|
|
|
|
|
考虑在固定地址分配的函数。或ISR(仅由中断向量地址引用)。或者你可以知道(常数)偏移到另一个例程。有很多种方法。我所拥有的最好的“东西”是在第一项中:例程,它是来自独立构建的软件组件的地址。由于这些例程位于同一个块中,包括位于修复地址的指针表,所以在试图将编译后的模块转换为库使用时存在一些问题。
|
|
|
|
|
|
固定地址不是标准C的一部分。任何允许固定地址的编译器都不会优化固定地址函数。这是矛盾修辞法,我认为你不能在没有引用的情况下做。
|
|
|
|
|
|
这是一个自创的伤口,加上有办法确保链接器不会丢弃错误标记为未使用的代码。
|
|
|
|
|
|
默认情况下,库是在对象文件级链接的。如果存档成员包含一个引用的符号和一个未引用的符号,则两者都将包含在最终图像中。这就是为什么许多库(例如XC32 C库)尝试使用一个函数的每一个文件模型。
|
|
|
|
|
|
安德斯。也许我应该用“元素”这个词来代替“函数”。
|
|
|
|
|
|
不能计算函数指针。除非您将一个函数放在指定的地址上,以便它可以从单独编译的代码(如引导加载程序)中引用,否则编译器不必将函数放在某个顺序中,并且可以将函数放在任何地方。即使函数以某种方式链接到其他元素,您也必须知道其他代码片段的大小以计算偏移量,并且C不提供任何机制来找出这个大小。你只能在汇编程序中做这些事情。如果有人有不同的想法,请发布一个简短的例子。
|
|
|
|
|
|
NordGuy可能不适用于GCC,但原则上,您可以为链接器定义内存段。这些部分也可以是绝对地址。您可以指定哪些对象(又名函数“.”)放入这样的部分中。如果您为这些对象中的每一个都有一个部分——嘿,presto!(只要让编译器知道部分的地址即可。)这适用于代码部分以及数据部分。
|
|
|
|
|
|
除了你能做的和不能做的在C.脚下击打雪橇之外,还有GCC和它的大脑死亡错误处理。记住,PICE不包含或错误检查功能,但不警告它们从不被调用。
|
|
|
|
|
|
这将是对该节的参考。但我认为C不提供任何机制来获取节地址。C.没有“节”这样的东西。
|
|
|
|
|
|
NasuuuC:Actudio。“标准C”:AccaIk无法访问该节。但是,通过知道地址(通过链接器定义定义):您可以为指针分配绝对地址。参见上文:“有方法……”建议我们在此停止讨论。我以前曾经复制过这样的“问题”(不是我的项目,不是我的设计决定——我只是要处理“已经存在的东西”)。
|
|
|
|
|
|
好主意。我现在正在做一个编译器。它无情地删除了所有没有提到的东西。想听听别人的想法。讨论结束。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
454 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3529 浏览 3 评论
1121浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1093浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
457浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 10:35 , Processed in 1.259918 second(s), Total 96, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1029