我的问题是关于在像这个启动脚本这样的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的大小设置为当前地址减去节的起始值。