Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly .部件中的大小运算符(stm32)_Assembly_Stm32_Cortex M_Eabi - Fatal编程技术网

Assembly .部件中的大小运算符(stm32)

Assembly .部件中的大小运算符(stm32),assembly,stm32,cortex-m,eabi,Assembly,Stm32,Cortex M,Eabi,我的问题是关于在ARM CORTEX M启动文件中使用.size操作符的问题,如下所示 我已经阅读了关于.size运算符的其他问题,我的理解是以下行: .X尺寸,-X 允许通过当前位置(.)与符号X定义之间的距离定义X的大小 当在X定义的末尾使用这一行时,这是正常的。没问题。 但是,当它在符号之前使用时,它如何工作呢 在启动脚本的第94行,您可以阅读: .section .isr_vector,"a",%progbits .type g_pfnVec

我的问题是关于在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启动代码中找到这一点^^


谢谢,答案很简单<代码>(点)表示当前地址。因此,表达式(来自github)


将节重置处理程序的大小设置为当前地址减去节的开头。

你说得对,它不应该工作。然而,可能没有什么取决于大小信息是否正确。PS:这应该定义一个零的大小,而不是-1。这看起来像是一个缺陷。哎呀!是的,你是对的,它将定义一个零。既然你这么说了,确实没有任何东西明确地依赖于这个尺寸信息。我只是没想到CubeMX生成的代码会出错。非常感谢。@Sebastien这不是一个错误。它设置了正确链接所需的必要信息。@fuz不是缺陷我对重置处理程序的信息没有意见,我想我理解点符号。我的问题是在第94行,当.size操作符放在g_pfinvectors符号之前(如问题所示)。第96行,而不是94行。很抱歉
.size   Reset_Handler, .-Reset_Handler