链接全局变量再说BSS段的清理
生活随笔
收集整理的這篇文章主要介紹了
链接全局变量再说BSS段的清理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
廢話就不多說了,開始。。。
????再說BSS段的清算
????
????
以前遇到一個裸機程序不能改變全局變量值的問題,最后模模糊糊處理了:手動添加了一個鏈接腳本,清算了BSS段。問題得以處理,就認定是BSS段清算的問題,全局變量在BSS段中。????
????
但是現在看這個論斷下的有點不全面。根據名著上說BSS段是放未初始化或者初始化為0的全局變量(經手動證實無誤),我不想著有問題了。那么把這個功績全歸于BSS段的清算仿佛有點勉強了。????
????
為了驗證一下,重新翻出以前的裸機程序,再來看看,這次只添加一個鏈接腳本,不清算BSS段,結果發現程序也是正常的,這下就完全的證實了我的假設。本來功績是“鏈接腳本”的。但是這位鏈接腳本是在u-boot中提取的沒有仔細分析。????
每日一道理
青春,有嬉笑聲與哭泣聲夾雜的年華,青春的少年是藍天中翱翔的幼鷹,雖然沒有完全長大,有些稚氣,有些懵懂,脫不開父母的雙手卻極力想去找尋屬于自己的一片天空,為的是一時的激情,為的是一種獨自翱翔的感覺!
????
現在退回到沒有處理這個問題之前,經過《 實例說明C語言中初始化和未初始化的全局變量地點不同的段》這個文章,肯定初始化為0的全局變量是存在BSS段的,想到查看一下用objdump生成的dis文件,看到下圖所示:????
????
????
全局變量g_val的鏈接地址是0x8080(32.125k)超出了CPU內部的內存大小(4k)。再看一下加上鏈接腳本的g_val的鏈接地址:????
????
????
可以看到鏈接地址是小于4k的。所以能夠改動了。文章結束給大家分享下程序員的一些笑話語錄: 有一天,一個男人穿越森林的時候,聽到一個細微的聲音叫住他。他低頭一看,是一只青蛙。
“如果你親我一下,我會變成一個美麗的公主哦。”男人一言不發,把青蛙撿起來,放入口袋。
“如果你親我一下,我會變成一個美麗的公主哦。而且,我會告訴我遇到的每一個人,你是多么聰明和勇敢,你是我的英雄。”男人把青蛙拿出來,對著它微微一笑,又把它放回口袋。
“如果你親我一下,我會變成一個美麗的公主,然后我愿意成為你的愛人一星期。”男人又把青蛙拿出來,對著它微微一笑,把它放回口袋。
“如果你親我一下,我會變成一個美麗的公主,然后我愿意成為你的愛人一年,而且你可以對我做任何事。”再一次,男人把青蛙拿出來,對著它微微一笑,又把它放回口袋。
最后,青蛙無力地問:“我開出了這么好的條件,為什么你還不肯吻我?”男人說:“我是一個程序員,我可沒時間和什么公主鬼混。不過,擁有一個會說話的青蛙,倒是蠻酷的。”
轉載于:https://www.cnblogs.com/jiangu66/archive/2013/05/17/3084507.html
總結
以上是生活随笔為你收集整理的链接全局变量再说BSS段的清理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有没有通过对方的气味,就感觉没有爱情的感
- 下一篇: 给个说说?