亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2604 | 回復(fù): 6
打印 上一主題 下一主題

關(guān)于鏈接過程的疑問 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-02-05 14:15 |只看該作者 |倒序?yàn)g覽
我用objdump -d 反匯編了一下, 看到最低地址的代碼(即init section)的地址不是從0x8048000開始的(而且地址不固定, 比如0x8048278或0x8048254等).  
1. 請問一下,  從0x8048000到0x8048278(或0x8048254)中間的是什么代碼?  

我再用ld --verbose看了下內(nèi)嵌的lds文件, 發(fā)現(xiàn)是從0x8048000+SIZEOF_HEADERS開始的.   我估計(jì)SIZEOF_HEADERS這個(gè)值是每次編譯不同的代碼都不同的. 我看了下binulits代碼,
雖然找到了這個(gè)值,  但好像都不是相關(guān)的.   
2. SIZEOF_HEADERS是什么值?  (這應(yīng)該和第一個(gè)問題是同一個(gè)問題)


3. 最后再問一下,  為什么鏈接器要從0x8048000開始呢?   下面還有好多線性空間沒用呢?

謝謝

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-02-05 15:38 |只看該作者
原帖由 bzw2000 于 2008-2-5 14:15 發(fā)表
我用objdump -d 反匯編了一下, 看到最低地址的代碼(即init section)的地址不是從0x8048000開始的(而且地址不固定, 比如0x8048278或0x8048254等).  
1. 請問一下,  從0x8048000到0x8048278(或0x8048254)中間的是 ...

1、2問題可以用info ld看到

`SIZEOF_HEADERS'
`sizeof_headers'
     Return the size in bytes of the output file's headers.  This is
     information which appears at the start of the output file.  You
     can use this number when setting the start address of the first
     section, if you choose, to facilitate paging.

     When producing an ELF output file, if the linker script uses the
     `SIZEOF_HEADERS' builtin function, the linker must compute the
     number of program headers before it has determined all the section
     addresses and sizes.  If the linker later discovers that it needs
     additional program headers, it will report an error `not enough
     room for program headers'.  To avoid this error, you must avoid
     using the `SIZEOF_HEADERS' function, or you must rework your linker
     script to avoid forcing the linker to use additional program
     headers, or you must define the program headers yourself using the
     `PHDRS' command (*note PHDRS:.


問題3嘛,曾經(jīng)看到過一個(gè)傳聞。0x8048000是unix移植到i386時(shí)的棧頂,當(dāng)時(shí)的棧從0x8048000到0x0。那個(gè)時(shí)候內(nèi)存還很貴,128M已經(jīng)是非常大的內(nèi)存了。后來如何改成程序的起始處就不得而知了。反正應(yīng)該是歷史原因,改成其它地址也會(huì)有人問為什么
128M的地址空間嘛,說有多浪費(fèi)也不見得,需要大地址空間就不用x86了。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-02-05 15:50 |只看該作者
原帖由 zx_wing 于 2008-2-5 15:38 發(fā)表

問題3嘛,曾經(jīng)看到過一個(gè)傳聞。0x8048000是unix移植到i386時(shí)的棧頂,當(dāng)時(shí)的棧從0x8048000到0x0。那個(gè)時(shí)候內(nèi)存還很貴,128M已經(jīng)是非常大的內(nèi)存了。后來如何改成程序的起始處就不得而知了。反正應(yīng)該是歷史原因,改成其它地址也會(huì)有人問為什么
128M的地址空間嘛,說有多浪費(fèi)也不見得,需要大地址空間就不用x86了




記得《IA64 Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》一書的作者感謝Intel的某某為他解釋,為什么i386的ld選擇了0x8048000這樣一個(gè)奇怪的地址。   但是這書沒看,不知道這解釋究竟怎樣^_^

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-02-05 16:14 |只看該作者
原帖由 albcamus 于 2008-2-5 15:50 發(fā)表


記得《IA64 Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》一書的作者感謝Intel的某某為他解釋,為什么i386的ld選擇了0x8048000這樣一個(gè)奇怪的地址。   但是這書沒看,不知道這解釋究竟怎樣^_^

汗~~~不會(huì)吧 。
這本書俺翻了無數(shù)次了,沒記得有這么一段啊。可惜書沒帶回學(xué)校,現(xiàn)在看不到。
我記得在前言(還是什么地方)david是感謝了intel的兩個(gè)大牛為他解釋了IA架構(gòu)中很多不明白的地方,但我記得沒提這個(gè)地址啊。
剛才去網(wǎng)上搜了搜,還是沒找到。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-02-05 16:16 |只看該作者
albcamus怎么會(huì)看這書?我覺得少有人去碰IA64,除了學(xué)術(shù)研究還有工作原因外。
把這個(gè)架構(gòu)看懂了再去看mips就簡單多了,至少俺是這樣感覺的。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-02-05 16:53 |只看該作者
原帖由 zx_wing 于 2008-2-5 16:16 發(fā)表
albcamus怎么會(huì)看這書?我覺得少有人去碰IA64,除了學(xué)術(shù)研究還有工作原因外。
把這個(gè)架構(gòu)看懂了再去看mips就簡單多了,至少俺是這樣感覺的。



年輕時(shí)侯不能正確估量自己的能力, 什么都想抓, 但什么都沒抓起來, 比方這本書我就只看了個(gè)《序》,和page fault時(shí)的處理流程……

MIPS我也不打算多正經(jīng)研究, 只要能把see MIPS run ... Linux -2nd看差不多明白就好了。 畢竟x86才是本行,雖然x86也沒學(xué)好

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2008-02-08 20:56 |只看該作者
謝謝兩位

根據(jù)兩位的提示,  查了下文檔,  發(fā)現(xiàn)可執(zhí)行程序的內(nèi)存映象還包括ELF頭和program header table,  怪不得多出了這幾個(gè)字節(jié),  再次謝謝
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP