這段時間都在閱讀《程序員的自我修養》,閱讀到4.1.2節,順便在公司的服務器上實驗了一下,發現差別我的ELF可執行文件默認起始地址與署上描述完全不同。
以下爲原書截圖:
而公司服務器上面的objdump後:
從上面的信息看,服務器是64位版本的,並且推算默認起始地址應該是0x0000000000400000。《程序員的自我修養》使用的是32位版本的,這應該使我們的主要區別,但爲什麼會有這麼大的差距呢?
經過一番查找,有人提示在《深入理解計算機系統》中有闡述。
在第九章第四節提到:
另外另一篇blog對內存管理的講解,可以作爲擴展閱讀:
http://blog.csdn.net/yang_yulei/article/details/24385573
至於爲什麼32位和64位系統對於ELF默認起始地址的設置有這麼大區別,並沒有找到相關資料。希望知道的同學在下面能留言告訴我。