几个知识点
初始化的全局变量存放在数据段;
局部变量存放在栈;
malloc分配的空间来自堆;
未初始化全局变量存放在bss段。
由此可以看出bss段的作用:保存未初始化的全局变量。
未初始化的含义为定义该变量时未对其进行赋值。
初始化bss段的实质是对bss段进行全段清零,使其所有数据的初始值都为0.只需要找到bss段的开头地址和结束地址,并对这两个地址之间的空间进行清零即可,开头地址和结束地址可通过连接脚本查的。
汇编代码:
clean_bss:
ldr r0, =bss_start
ldr r1, =bss_end
cmp r0, r1
moveq pc, lr
clean_loop:
mov r2, #0
str r2, [r0], #4
cmp r0, r1
bne clean_loop
mov pc, lr