如何解决为什么Cortex-M4在链接描述文件中包含ARM to Thumb胶水
我们正在为STM32芯片上的ARM Cortex M4编写一些代码。
我的理解是Cortex-M4具有一些32位指令,但是这些不是32位ARM指令,它们只是一些特殊指令。我认为胶水是用于在ARM和Thumb指令集之间进行转换。那么为什么链接脚本需要胶水
.text :
{
. = ALIGN(4);
*(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */
*(.glue_7) /* glue arm to thumb code */
*(.glue_7t) /* glue thumb to arm code */
由于处理器仅支持重击指令,我是否可以删除粘胶_7和粘胶_7t?这样做会释放出任何闪存吗?
解决方法
发布的脚本将始终为调用thumb / ARM的ARM /拇指代码创建节,如果没有什么可调用的,则这些节为空。空节是良性的。
如果您要删除未使用的部分而不修改链接器,则一种干净的方法是通过--gc-sections
执行死代码消除:
一旦使用这些选项创建了对象和静态库,链接器就可以执行无效代码消除。您可以通过将-Wl,-gc-sections选项设置为gcc命令或在gnatmake的-largs部分中来执行此操作。这将对从未引用的代码和数据进行垃圾收集。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。