作者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/cn.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