BSS初始化

来源:互联网 发布:外贸整合营销 海关数据 编辑:程序博客网 时间:2024/05/14 06:58
1、BSS段的作用
初始化的全局变量:数据段
局部变量: 栈
malloc:堆
未初始化的全局变量:bss段

bss.c
  1. #include <stdio.h>

  2. int year;

  3. int main()
  4. {
  5.     year = 2014;
  6.     return year;
  7. }
[root@localhost lesson11_bss]# arm-linux-gcc -c bss.c -o bss
[root@localhost lesson11_bss]# arm-linux-readelf -a bss >dump

  1. 80: 00008410 0 NOTYPE GLOBAL DEFAULT ABS __exidx_end
  2. 81: 00010528 0 OBJECT GLOBAL HIDDEN 22 __dso_handle
  3. 82: 00010530 4 OBJECT GLOBAL DEFAULT 23 year                            10530是year的位置
  4. 83: 00010534 0 NOTYPE GLOBAL DEFAULT ABS __end__
  5. 84: 00008384 116 FUNC GLOBAL DEFAULT 12 __libc_csu_init
  6. 85: 00010534 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__                    结尾是10534
  7. 86: 0001052c 0 NOTYPE GLOBAL DEFAULT ABS __bss_start                    起始是1052c,所以year在bss段中
  8. 87: 00010534 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__

2、未初始化的变量,需要全部清零

  1. clean_bss:
  2.     ldr r0, =bss_start                     bss_start是起始地址,在gboot.lds中获得的
  3.     ldr r1, =bss_end                       bss_end是结束地址,在gboot.lds中获得的
  4.     cmp r0,r1                              比较r0,和r1
  5.     moveq pc,lr                            如果相同就跳转回bl clean_bss

  6. clean_loop:
  7.     mov r2, #0                             设置r2为0
  8.     str r2, [r0], #4                       初始化r0指向的内容,并将r0往下移动一格
  9.     cmp r0,r1                              比较r0,r1
  10.     bne clean_loop                         如果不相同就循环clean_loop
  11.     mov pc,lr                              跳转回bl clean_bss



<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(30) | 评论(0) | 转发(0) |
0

上一篇:栈初始化

下一篇:一跃进入C大门

相关热门文章
  • SHTML是什么_SSI有什么用...
  • 查看linux中某个端口(port)...
  • 卡尔曼滤波的原理说明...
  • shell中字符串操作
  • 关于java中的“错误:找不到或...
给主人留下些什么吧!~~
原创粉丝点击