assembly ARM组件:全局变量动态数据段或全局数据段

jljoyd4f  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(134)

我的书谈到了全局数据段和动态数据段。下面是我书中的一张图片:

这让我对全局变量产生了疑问,全局变量存放在哪里,上面说是存放在全局数据段,但是如果启动时不知道这个变量,那么应该在动态数据段呢?

zrfyljdw

zrfyljdw1#

将内容放在段中取决于何时分配内存,而不是何时使用内存或获取其值。
本书所指的全局数据段是指在编译时分配了地址的所有变量。
本书所指的动态数据段是指在运行时才分配地址的数据段。
然而,正如我解释,当你张贴几乎完全相同的问题之前,这本书不是很好!在真实的世界中,堆栈和堆通常不会集中在一起作为一个单一的段,他们是两个非常不同的东西,应该分开处理。
在同一个区块中,堆的增长和栈的下降是最大化可用内存的常用方法,并且仍然经常在(非安全关键的)嵌入式系统中使用,但现在更常见的是它们完全分开。
此外,全局变量有很多种。只读全局变量可能实际上在文本段中,或者在本书似乎不知道的它们自己的只读数据段中。可写全局变量根据它们是零初始化的、非零初始化的还是未初始化的分为两三种类型。并且它们中的每一个都具有单独的段名(通常前两个为X1 M0 N1 X和X1 M1 N1 X,未初始化数据为非标准化名称)。

相关问题