[国嵌攻略][044][初始化Bss段]

BSS段的作用

1.变量存储的空间

初始化的全局变量:数据段

未初始化的全局变量:BSS段

局部变量:栈

动态分配变量:堆

2.为什么要对BSS段初始化

未初始化的全局变量在使用时才被赋值,未了避免在使用时忘记赋值,导致使用随机值。由系统工程师在系统启动时,把BBS清零。

初始化BSS段

找到BSS段起始地址和结束地址向其中填零,BSS段地址记录在链接器脚本中

/*
*名称:init_bss
*功能:初始化BSS段
*/
init_bss:
	ldr r1, =bss_start
	ldr r2, =bss_end
	mov r3, #0
	
loop_bss:
	cmp r1, r2   //如果BSS段起始地址等于结束地址,那么结束循环
	beq end_bss
	
	str r3, [r1], #4   //清零BSS段对应地址的值,然后让该地址加4字节
	b loop_bss

end_bss:
	mov pc, lr
原文地址:https://www.cnblogs.com/d442130165/p/4931109.html