[理工] 載入器

作者: yoz4ni (yoooooz)   2019-12-28 16:27:35
想請問一下,relocation跟linking是在做什麼的
relocation只是要更改須修正的指令位置?
linking是把會用到的副程式串起來?
如果單獨看的話,我是知道
loading是在把程式載入到memory
relocation是在修改位置
linking是在合併程式
可是把上面三個串在一起我就亂掉了,不知道怎麼看(像是只有執行relocation跟linking)
看了好幾天還是想不出來_(┐「ε:)_
謝謝
作者: DLHZ ( )   2019-12-28 17:34:00
程式內相關的函數會先linking(放到對應的位子跟決定呼叫位址)再對被linking的函數relocation(根據被放的地方修正函數內的位址) 有錯還請幫忙提醒_(┐「ε:)_
作者: yoz4ni (yoooooz)   2019-12-28 20:14:00
放到對應的位子跟決定呼叫位址->可是不是還沒丟到memory裡面嗎,怎麼知道要放在哪,怎麼relocation?_(┐「ε:)_
作者: DLHZ ( )   2019-12-28 20:16:00
這是相對的 不是真的在mem中的位址
作者: ok8752665 (dd8752665)   2019-12-28 20:25:00
想成是把相關函數接在程式下方例如到時候主程式在位址X執行 相關函式放X+500之類的
作者: yoz4ni (yoooooz)   2019-12-28 20:36:00
所以說linking只是會把相關會用到的程式連在主程式下方,位置都是虛的?然後loading的時候有可能是分散在memory個地方,不會連續在一起?
作者: ok8752665 (dd8752665)   2019-12-28 20:41:00
相反吧 剛開始位置都是虛的 到時候打包載入記憶體時再針對這些位置做修正https://tinyurl.com/vsbp7hn 看這個有圖比較清楚
作者: yoz4ni (yoooooz)   2019-12-29 20:55:00
想在請問一下loading relocation linking 這三個執行的順序有一定嗎?有誰一地要在最後面之類的嗎,還是說3個擺的順序不同會有不一樣的功能?

Links booklink

Contact Us: admin [ a t ] ucptt.com