[理工] 加载器

楼主: 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