程序集中的.size运算符(stm32)



我的问题是关于在像这个启动脚本这样的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启动代码中找到^^

谢谢,

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

.size   Reset_Handler, .-Reset_Handler

将节Reset_Handler的大小设置为当前地址减去节的起始值。

相关内容

  • 没有找到相关文章

最新更新