4.2.1分段结构 2.未初始化段 是为变量在数据存储器中保留空间的。它们在目 标文件中没有实际内容,只是保留出空间,在运 行程序时再利用这些空间去建立和存储变量。未 初始化段一般应建立在片内或片外RAM中。 由这些段定义的空间仅作为临时存储空间,在 程序运行时,可以利用这些存储空间存放变量。 未初始化段分为默认的和命名的两种,分别由 汇编器伪指令.bss和.usect)产生。. 12
2.未初始化段 是为变量在数据存储器中保留空间的。它们在目 标文件中没有实际内容,只是保留出空间,在运 行程序时再利用这些空间去建立和存储变量。未 初始化段一般应建立在片内或片外RAM中。 • 由这些段定义的空间仅作为临时存储空间,在 程序运行时,可以利用这些存储空间存放变量。 • 未初始化段分为默认的和命名的两种,分别由 汇编器伪指令.bss和.usect产生。. 12 4.2.1分段结构
4.2.1分段结构 One of the linker's functions is to relocate sections into the target memory map;this function is called allocation. 目标文件中的段与目标存储器之间的关系: 目标文件 目标存储器 .bss RAM .data E2PROM .text ROM 13
One of the linker’s functions is to relocate sections into the target memory map;this function is called allocation. 目标文件中的段与目标存储器之间的关系: 目标文件 目标存储器 .bss .data .text RAM E 2 PROM ROM 13 4.2.1分段结构
4.2.1分段结构 3.段定义伪指令 >汇编器对段的处理是通过段伪指令来区别各个段的, 并将段名相同的语句汇编在一起。 >汇编器有5条伪指令可识别汇编语言程序的各个部分: ●.bss 一定义未初始化段 ●.usect 定义未初始化段 ●.text 一定义已初始化段 ●.data 定义已初始化段 ●.sect 定义已初始化段 14
3. 段定义伪指令 ➢汇编器对段的处理是通过段伪指令来区别各个段的, 并将段名相同的语句汇编在一起。 ➢汇编器有5条伪指令可识别汇编语言程序的各个部分: ● .bss ● .usect ● .text ● .data ● .sect ——定义未初始化段 ——定义未初始化段 ——定义已初始化段 ——定义已初始化段 ——定义已初始化段 14 4.2.1分段结构
4.2.1分段结构 ·定义已初始化段的伪指令 .text [段起点] .data [段起点] .sect “段名”[段起点] 段起点一是任选项。 若选用,它为段程序计数器SPC定义一个起始值。 若默认,则SPC从0开始。 15
• 定义已初始化段的伪指令 .text [段起点] .data [段起点] .sect “段名”[,段起点] 段起点——是任选项。 若选用,它为段程序计数器SPC定义一个起始值。 若默认,则SPC从0开始。 15 4.2.1分段结构
定义未初始化段的伪指令 (1).bss伪指令:用于在bss段中保留若干个空间。 格式:bss符号,字数[[块标记]儿定位对齐标记] 符号一对应于保留的存储空间第一个字的变量名称。 字数一表示在bss段或标有名字的段中保留若干个存 储单元。 块标记一若非零值,则分配的字数空间连续,除非大 于一页,否则不跨页。 定位标记一表明字的对齐方式(C54x偶地址对齐) >每调用一次.bss伪指令,汇编器在相应的段保留更 多的空间。 16
(1) .bss伪指令: 用于在bss段中保留若干个空间。 格式:.bss 符号, 字数 [, [块标记][, 定位对齐标记]] 符号—对应于保留的存储空间第一个字的变量名称。 字数—表示在bss段或标有名字的段中保留若干个存 储单元。 块标记—若非零值,则分配的字数空间连续,除非大 于一页,否则不跨页。 定位标记—表明字的对齐方式(C54x偶地址对齐) ➢ 每调用一次.bss伪指令,汇编器在相应的段保留更 多的空间。 16 定义未初始化段的伪指令