1

我的问题是关于 .size 运算符在 ARM CORTEX M 启动文件中的使用,例如这个启动脚本

我已经阅读了有关 .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 启动代码中找到它^^

谢谢,

4

1 回答 1

-1

答案很简单。.(点)表示当前地址。所以表达式(来自github)

.size   Reset_Handler, .-Reset_Handler

将节 Reset_Handler 的大小设置为当前地址减去节的开头。

于 2020-10-25T16:02:45.013 回答