日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BSS初始化

發布時間:2024/3/24 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。