4.2.1分段结构 1.已初始化段 >包含程序代码、常数表格和数据。已初始化段的值是 不可修改的,因而一般将它们建立在程序存储器中。 >每个段都可以独立的进行重定位,且可访问在其它段 中定义的符号。 主要有: .text段一已初始化段; .data段一已初始化段; .sect段一已初始化段,由汇编器伪指令建立 的自定义段。 11
1.已初始化段 ➢ 包含程序代码、常数表格和数据。已初始化段的值是 不可修改的,因而一般将它们建立在程序存储器中。 ➢ 每个段都可以独立的进行重定位,且可访问在其它段 中定义的符号。 主要有: .text段——已初始化段; .data段——已初始化段; .sect段——已初始化段,由汇编器伪指令建立 的自定义段。 11 4.2.1分段结构
4.2.1分段结构 2.未初始化段 是为变量在数据存储器中保留空间的。它们在目 标文件中没有实际内容,只是保留出空间,在运 行程序时再利用这些空间去建立和存储变量。 未初始化段一般应建立在片内或片外RAM中。 由这些段定义的空间仅作为临时存储空间,在 程序运行时,可以利用这些存储空间存放变量。 未初始化段分为默认的和命名的两种,分别由 汇编器伪指令.bss和.usectj产生。. 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分段结构