9
A
回答
12
汇编程序有一个源文件可以查看。它必须建立一个基于该源文件的内存映像。所以它从0开始,代码为0,数据开始为0。结果进入目标文件。
现在,链接器来了,需要将许多目标文件合并成一个可执行文件(或内核映像,或其他)。它不能让每个人都在0,他们会重叠。因此,它必须重新定位地址,以便将每个对象文件的数据值分配到唯一的范围。
然后,图像被加载到虚拟内存中,操作系统可能有很好的理由想要使用非'0'的地址作为基本虚拟地址。所以,在运行时,它要重新定位一切。
最后,如果涉及共享库,汇编程序和链接程序都不知道它们将在运行环境中的位置,因此必须重定位它们的引用。
相关问题
- 1. CSS中的重要含义是什么?
- 2. x:Xamarin Button的双重含义是什么?
- 3. Perl中“锁定”的含义是什么?
- 4. “UseTaskFriendlySynchronizationContext”的含义是什么?
- 5. CronJobs的含义是什么?
- 6. configureDefaultServletHandling的含义是什么?
- 7. $ @的含义是什么?
- 8. URL的含义是什么
- 9. if(';')的含义是什么?
- 10. !int_variable--?的含义是什么!
- 11. ui.draggable.draggable的含义是什么?
- 12. SootMethod.getSubSignature()的含义是什么?
- 13. GLib为什么重新定义类型?
- 14. 什么是可重定位程序?
- 15. 代码含义是什么?
- 16. erlang中的“重新定义模块”错误是什么意思?
- 17. 如果包含的块是内联的,那么绝对定位元素的确切含义块是什么?
- 18. 什么是CSS中的'qualified'的定义/含义? (csslint.net警告)
- 19. $这意味着类定义中的含义是什么?
- 20. 函数定义中“... args”(三个点)的含义是什么?
- 21. 属性定义中括号的含义是什么?
- 22. XFL边缘定义中非数值的含义是什么?
- 23. 这个类定义在C#中的含义是什么?
- 24. 32位应用程序的含义是什么?
- 25. 是什么在“/usr/include/c++/4.4/bits/”位的含义
- 26. 命名空间未定义或重新定义,为什么?
- 27. 从XAML重新定位符号定义
- 28. UITTabBarController自定义(重新定位tabbar)
- 29. F#中的NumericLiteralN的含义是什么?
- 30. 是什么的getch的含义()== 13
http://stackoverflow.com/questions/6002359/so-most-of-the-binary-is-composed-of-reloc-table/6092773#6092773 – JosephH 2013-05-05 15:02:57
什么是您的实际编程问题?您的程序是否因为重定位问题而无法运行? – 2013-05-05 15:04:21
详细的最小示例:http://stackoverflow.com/a/30507725/895245 – 2015-10-22 08:32:23