您的位置 首页 解答

TQ2440国嵌学院gboot-bss段初始化

BSS段主要用来存放未初始化的全局变量首先先查看我们的链接器脚本文件,也就是gbootldsOUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{=0x

BSS段首要用来寄存未初始化的全局变量

首要先查看咱们的链接器脚本文件,也便是gboot.lds

OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS {
. = 0x30008000;

. = ALIGN(4);
.text :
{
start.o (.text)
*(.text)
}

. = ALIGN(4);
.data :
{
*(.data)
}

. = ALIGN(4);
bss_start = .;
.bss :
{
*(.bss)
}
bss_end = .;
}

能够看到上面bss段的开端地址bss_start和完毕地址bss_end,

bss首要是寄存未初始化的全局变量,由于是没有初始化,因而值可能是随机值,假如被应用程序调用,可能会有影响,因而初始化bss,也便是将bss段的内容悉数赋值为0

代码如下:

clean_bss:

ldrr0,=bss_start

ldrr1,=bss_end

mov r3,#0

cmp r0,r1

moveqpc,lr

clean_loop:

strr2,[r0],#4

cmp r0,r1

bne clean_loop

mov pc,lr

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/258492.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部