作者yoz4ni (yoooooz)
看板Grad-ProbAsk
標題[理工] 載入器
時間Sat Dec 28 16:27:35 2019
想請問一下,relocation跟linking是在做什麼的
relocation只是要更改須修正的指令位置?
linking是把會用到的副程式串起來?
如果單獨看的話,我是知道
loading是在把程式載入到memory
relocation是在修改位置
linking是在合併程式
可是把上面三個串在一起我就亂掉了,不知道怎麼看(像是只有執行relocation跟linking)
看了好幾天還是想不出來_(┐「ε:)_
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.125.217.50 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1577521657.A.F12.html
1F:→ DLHZ: 程式內相關的函數會先linking(放到對應的位子跟決定呼叫位址 12/28 17:34
2F:→ DLHZ: )再對被linking的函數relocation(根據被放的地方修正函數內 12/28 17:34
3F:→ DLHZ: 的位址) 有錯還請幫忙提醒_(┐「ε:)_ 12/28 17:34
4F:→ yoz4ni: 放到對應的位子跟決定呼叫位址->可是不是還沒丟到memory 12/28 20:14
5F:→ yoz4ni: 裡面嗎,怎麼知道要放在哪,怎麼relocation?_(┐「ε:)_ 12/28 20:15
6F:→ DLHZ: 這是相對的 不是真的在mem中的位址 12/28 20:16
7F:→ ok8752665: 想成是把相關函數接在程式下方 12/28 20:25
8F:→ ok8752665: 例如到時候主程式在位址X執行 相關函式放X+500之類的 12/28 20:26
9F:→ yoz4ni: 所以說linking只是會把相關會用到的程式連在主程式下方, 12/28 20:36
10F:→ yoz4ni: 位置都是虛的?然後loading的時候有可能是分散在memory個地 12/28 20:36
11F:→ yoz4ni: 方,不會連續在一起? 12/28 20:36
12F:→ ok8752665: 相反吧 剛開始位置都是虛的 到時候打包載入記憶體時 12/28 20:41
13F:→ ok8752665: 再針對這些位置做修正 12/28 20:42
15F:→ yoz4ni: 想在請問一下loading relocation linking 這三個執行的 12/29 20:55
16F:→ yoz4ni: 順序有一定嗎?有誰一地要在最後面之類的嗎,還是說3個擺的 12/29 20:56
17F:→ yoz4ni: 順序不同會有不一樣的功能? 12/29 20:57