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