欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

BSS初始化

发布时间:2024/3/24 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 BSS初始化 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1、BSS段的作用
初始化的全局变量:数据段
局部变量: 栈
malloc:堆
未初始化的全局变量:bss段

bss.c
  • #include <stdio.h>

  • int year;

  • int main()
  • {
  •     year = 2014;
  •     return year;
  • }
  • [root@localhost lesson11_bss]# arm-linux-gcc -c bss.c -o bss [root@localhost lesson11_bss]# arm-linux-readelf -a bss >dump
  • 80: 00008410 0 NOTYPE GLOBAL DEFAULT ABS __exidx_end
  • 81: 00010528 0 OBJECT GLOBAL HIDDEN 22 __dso_handle
  • 82: 00010530 4 OBJECT GLOBAL DEFAULT 23 year                            10530是year的位置
  • 83: 00010534 0 NOTYPE GLOBAL DEFAULT ABS __end__
  • 84: 00008384 116 FUNC GLOBAL DEFAULT 12 __libc_csu_init
  • 85: 00010534 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__                    结尾是10534
  • 86: 0001052c 0 NOTYPE GLOBAL DEFAULT ABS __bss_start                    起始是1052c,所以year在bss段中
  • 87: 00010534 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__

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

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

  • clean_loop:
  •     mov r2, #0                             设置r2为0
  •     str r2, [r0], #4                       初始化r0指向的内容,并将r0往下移动一格
  •     cmp r0,r1                              比较r0,r1
  •     bne clean_loop                         如果不相同就循环clean_loop
  •     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中的“错误:找不到或...
      给主人留下些什么吧!~~ 评论热议

      总结

      以上是生活随笔为你收集整理的BSS初始化的全部内容,希望文章能够帮你解决所遇到的问题。

      如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。