组件中的.size运算符(stm32)

我的问题是关于在startup script这样的ARM CORTEX M启动文件中使用.size运算符。

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

谢谢

tanchengbo020028020 回答:组件中的.size运算符(stm32)

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

.size   Reset_Handler,.-Reset_Handler

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

本文链接:https://www.f2er.com/1336397.html

大家都在问