gpt4 book ai didi

arm - 为什么 Cortex-M4 在链接描述文件中包含 ARM to Thumb 胶水

转载 作者:行者123 更新时间:2023-12-04 12:33:20 31 4
gpt4 key购买 nike

我们正在为 STM32 芯片上的 ARM Cortex M4 编写一些代码。
我的理解是 Cortex-M4 有一些 32 位指令,但这些不是 32 位 ARM 指令,它们只是一些特殊指令。我认为胶水用于在 ARM 和拇指指令集之间进行转换。那么为什么链接器脚本需要胶水

.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 */
由于处理器只支持 thump 指令,我可以去掉glue_7 和glue_7t 吗?这样做会释放任何闪存吗?

最佳答案

发布的脚本总是会为调用thumb/ARM 的ARM/thumb 代码创建节,如果没有什么可调用的,这些节是空的。空白部分是良性的。
如果你想在不修改链接器的情况下删除未使用的部分,一个干净的方法是执行死代码消除,通过 --gc-sections :

Once the objects and static libraries are created with these options, the linker can perform the dead code elimination. You can do this by setting the -Wl,--gc-sections option to gcc command or in the -largs section of gnatmake. This will perform a garbage collection of code and data never referenced.

关于arm - 为什么 Cortex-M4 在链接描述文件中包含 ARM to Thumb 胶水,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63531537/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com