ZHCU875Z August 2001 – October 2023 SM320F28335-EP
未初始化的段在 TMS320C28x 存储器中保留空间;它们通常位于 RAM 中。这些段在目标文件中并无实际内容;只是保留存储器。程序可以在运行时使用此空间来创建和存储变量。
未初始化的数据区域是使用以下汇编器指令编译的。
每次调用 .bss 或 .usect 指令时,汇编器都会在 .bss 或用户命名段中保留额外空间。语法为:
.bss symbol, size in words[, blocking flag[, alignment flag] ] | |
symbol | .usect "section name", size in words[, blocking flag[, alignment flag] ] |
symbol(符号) | 指向此次通过调用 .usect 指令保留的第一个字。符号 对应于要保留空间的变量的名称。它可由任何其他段引用,也可声明为全局符号(使用 .global 指令)。 |
size in words(以字表示的大小) | 是一个绝对表达式(请参阅节 4.9)。.usect 指令用于在段名中保留 以字表示的大小 个字。用户必须指定大小;无默认值。 |
blocking flag(分块标记) | 是一个可选参数。如果为此参数指定大于 0 的值,汇编器会连续分配 以字表示的大小。这意味着分配的空间不会跨越页边界,除非其大小大于一页,在这种情况下,分配的空间将在页边界上开始。默认情况下,编译器会将此标志设为 0,以使用 DP 加载优化。编译器提供“blocked”和“noblocked”变量属性,用于根据变量控制分块。如需 DP 加载优化的示例,请参阅 TI E2E 社区的 Tools Insider 博客。 |
alignment flag(对齐标记) | 是一个可选参数。它会使汇编器在长字边界上分配指定的以字表示的大小。最后在指定的对齐标记的 2 次幂边界上对齐。例如,对齐标记为 5,则对齐边界为 2**5,即 32 个字。 |
section name(段名) | 指定要保留空间的用户命名段。请参阅节 2.4.3。 |
初始化段的指令(.text、.data 和 .sect)可更改将哪个段视为当前 段(请参阅节 2.4.4)。但 .bss 和 .usect 指令不会 更改当前段;它们只是临时离开当前段。在 .bss 或 .usect 指令之后,汇编器会立即继续汇编到这些指令之前的当前段。.bss 和 .usect 指令可出现在初始化段中的任何位置,不会影响其内容。请参阅节 2.4.7的示例。
.usect 指令也可用于创建未初始化的子段。有关创建子段的更多信息,请参阅节 2.4.6。
.common 指令(仅限 EABI)与创建未初始化数据段的指令类似,只是通用符号是由链接器创建的。