Microchip
直播中

倪辰曦

8年用户 204经验值
私信 关注
[问答]

如何阻止链接器删除函数

我想在C中定义一个XC8函数,我可以从我的MPASM项目中调用它。使用“@”指定符,我们可以指定在所得到的固件文件中,这个函数结束的位置:但由于这个函数不会从C代码本身调用,所以链接器会删除它。我能阻止这个吗?

回帖(9)

王焕树

2020-4-27 13:02:53
你确定你知道自己在做什么吗?C代码假定所有的C运行时代码都已运行,并且内存分配由C编译器处理。您提到的是从C调用的程序集代码吗?
举报

王璨

2020-4-27 13:15:41
不久以前有一些类似的线索。目前无法找到它……缩短事情:找到开关禁用优化步骤消除未使用的代码。
举报

李木木

2020-4-27 13:20:56
对。我想调用的C函数是无参数的,只触及访问库中的全局属性。从程序集调用它应该是一个“call myfunc”语句。它是从我用mpasm编写的中断内部调用的。我想我遇到过这个线程,但它是关于一个在内存使用统计中没有考虑的变量。这是关于一个程序存储器。完全禁用此优化不是一个选项,因为我希望我的代码中存在许多调试函数,这些函数在发布版本中根本不被调用。目前看来,最接近解决办法的是在调用代码之前放置一些虚假的条件测试。尽管它工作起来并不优雅。但我希望有更好的东西,我为什么问这个问题。
举报

陈晨

2020-4-27 13:29:48
这里有一个线程,你必须把函数名放在哪里。还可以通过将函数名赋值给指针来欺骗。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分