ercircle 发表于 2024-12-1 12:39:40

SDCC不支持REMOVEUNUSED?|不支持,需手动删除同文件中UNUSED

翻阅手册,一顿搜索无果。有大佬知道如何sdcc下REMOVEUNUSED不?



--20241202
不支持,超内存则需手动删除同文件中UNUSED



--20250313
查阅手册发现个除手动屏蔽闲置函数外新解决办法,--stack-auto

https://www.stcaimcu.com/data/attachment/forum/202503/13/210514gc9tttjrtlktrra1.jpg

VCC 发表于 2024-12-1 13:44:44

具体的flag当然不一样,REMOVEUNUSED是Keil PK51工具链的LX51这个程序的控制flag。不是其他软件的

soma 发表于 2024-12-1 14:34:54

看了sdccman好像没有相关命令

VCC 发表于 2024-12-1 15:25:06

本帖最后由 VCC 于 2024-12-1 15:35 编辑

soma 发表于 2024-12-1 14:34
看了sdccman好像没有相关命令
有可能已经有这个了

我看dead code elimination有点像



附SDCC文档




进一步查了一下,应该就是这个的



不过我没有SDCC使用经验,建议楼主先确定一下,它是不是会默认过滤掉未使用的函数呢?还是只过滤函数内未使用的代码段?

ercircle 发表于 2024-12-1 16:33:53

不会默认过滤掉未使用的函数,这是头疼的地方。像w25qxx这种工具代码,几十个函数大多数没用到它全编译进去直接报错
?ASlink-Error-Could not get xxx consecutive bytes in internal RAM for area DSEG.

测试一些gcc的flag也不认{:4_177:}

VCC 发表于 2024-12-1 17:23:03

本帖最后由 VCC 于 2024-12-1 17:27 编辑

ercircle 发表于 2024-12-1 16:33
不会默认过滤掉未使用的函数,这是头疼的地方。像w25qxx这种工具代码,几十个函数大多数没用到它全编译进去 ...
还是用keil呗{:4_245:}


话说,你使用SDCC的动机是?

ercircle 发表于 2024-12-1 17:43:17

VCC 发表于 2024-12-1 17:23
还是用keil呗




{:4_164:}移植例程包,给51大舞台添砖加瓦。

VCC 发表于 2024-12-1 17:49:06

ercircle 发表于 2024-12-1 17:43
移植例程包,给51大舞台添砖加瓦。
好好好!添砖加瓦!

{:4_252:}

ercircle 发表于 2024-12-1 19:18:23

延申阅读:
https://sourceforge.net/p/sdcc/feature-requests/452/
https://sourceforge.net/p/sdcc/discussion/1865/thread/05f487b4/?limit=25#d6c6

链接中提到的先编译个.lib再链接,经测试需要把函数分布在尽量多的c文件中,最好一个函数一个C文件,生成 rel,编译lib,再链接。同一个C文件中的未使用函数还是不会优化。

DebugLab 发表于 2024-12-1 21:11:11

ercircle 发表于 2024-12-1 19:18
延申阅读:
https://sourceforge.net/p/sdcc/feature-requests/452/
https://sourceforge.net/p/sdcc/discu ...

学习
页: [1]
查看完整版本: SDCC不支持REMOVEUNUSED?|不支持,需手动删除同文件中UNUSED