【发布时间】:2021-02-07 22:01:59
【问题描述】:
我的问题是关于在 ARM CORTEX M 启动文件中使用 .size 运算符,例如 startup script。
我已阅读有关 .size 运算符的其他问题,我的理解是以下行:
.size X,.-X
允许通过当前位置 (.) 与符号 X 的定义之间的距离来定义 X 的大小。
在 X 定义的末尾使用此行时可以。没问题。 但是在符号之前使用它怎么会起作用呢?
在启动脚本的第 94 行,您可以阅读:
.section .isr_vector,"a",%progbits
.type g_pfnVectors, %object
.size g_pfnVectors, .-g_pfnVectors
g_pfnVectors:
.word _estack
.word Reset_Handler
[...]
它不应该定义-1的大小吗????它怎么能工作?我想这不是错误,因为您可以在所有 STM32 启动代码中找到它^^
谢谢,
【问题讨论】:
-
你是对的,它不应该工作。然而,也许没有什么取决于该尺寸信息是否正确。 PS:这应该定义一个大小为零,而不是-1。
-
这看起来像个缺陷。
-
糟糕!是的,你是对的,它将定义一个零。既然您这么说,确实没有什么明确取决于该大小信息。我只是没想到 CubeMX 生成的代码会出错。非常感谢。
-
@Sebastien 这不是错误。它设置正确链接所需的必要信息。
-
@fuz 不是缺陷
标签: assembly stm32 cortex-m eabi