[理工] 載入器

看板Grad-ProbAsk作者 (yoooooz)時間6年前 (2019/12/28 16:27), 編輯推噓0(0017)
留言17則, 3人參與, 6年前最新討論串1/1
想請問一下,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

12/28 17:34, 6年前 , 1F
程式內相關的函數會先linking(放到對應的位子跟決定呼叫位址
12/28 17:34, 1F

12/28 17:34, 6年前 , 2F
)再對被linking的函數relocation(根據被放的地方修正函數內
12/28 17:34, 2F

12/28 17:34, 6年前 , 3F
的位址) 有錯還請幫忙提醒_(┐「ε:)_
12/28 17:34, 3F

12/28 20:14, 6年前 , 4F
放到對應的位子跟決定呼叫位址->可是不是還沒丟到memory
12/28 20:14, 4F

12/28 20:15, 6年前 , 5F
裡面嗎,怎麼知道要放在哪,怎麼relocation?_(┐「ε:)_
12/28 20:15, 5F

12/28 20:16, 6年前 , 6F
這是相對的 不是真的在mem中的位址
12/28 20:16, 6F

12/28 20:25, 6年前 , 7F
想成是把相關函數接在程式下方
12/28 20:25, 7F

12/28 20:26, 6年前 , 8F
例如到時候主程式在位址X執行 相關函式放X+500之類的
12/28 20:26, 8F

12/28 20:36, 6年前 , 9F
所以說linking只是會把相關會用到的程式連在主程式下方,
12/28 20:36, 9F

12/28 20:36, 6年前 , 10F
位置都是虛的?然後loading的時候有可能是分散在memory個地
12/28 20:36, 10F

12/28 20:36, 6年前 , 11F
方,不會連續在一起?
12/28 20:36, 11F

12/28 20:41, 6年前 , 12F
相反吧 剛開始位置都是虛的 到時候打包載入記憶體時
12/28 20:41, 12F

12/28 20:42, 6年前 , 13F
再針對這些位置做修正
12/28 20:42, 13F

12/28 20:48, 6年前 , 14F
https://tinyurl.com/vsbp7hn 看這個有圖比較清楚
12/28 20:48, 14F

12/29 20:55, 6年前 , 15F
想在請問一下loading relocation linking 這三個執行的
12/29 20:55, 15F

12/29 20:56, 6年前 , 16F
順序有一定嗎?有誰一地要在最後面之類的嗎,還是說3個擺的
12/29 20:56, 16F

12/29 20:57, 6年前 , 17F
順序不同會有不一樣的功能?
12/29 20:57, 17F
文章代碼(AID): #1U1n7vyI (Grad-ProbAsk)