Assembly 搬迁的概念意味着什么?

Assembly 搬迁的概念意味着什么?,assembly,linker,relocation,Assembly,Linker,Relocation,我是装配新手,因此想更多地了解搬迁的概念 为什么我们需要重新定位程序、数据 到底是怎么做的 如果有人能用一个初学者级别的例子来解释,那就太好了。汇编程序有一个源文件要查看。它必须基于一个源文件构建一个内存映像。因此,代码从0开始,数据也从0开始。结果进入一个对象文件 现在,链接器出现了,需要将许多对象文件组合成一个可执行文件(或内核映像,或其他)。它不能让每个人都处于0,它们会重叠。因此,它必须重新定位地址,以便将每个对象文件的数据量分配到一个唯一的范围 然后,映像加载到虚拟内存中,操作系统可能

我是装配新手,因此想更多地了解搬迁的概念

  • 为什么我们需要重新定位程序、数据
  • 到底是怎么做的

  • 如果有人能用一个初学者级别的例子来解释,那就太好了。

    汇编程序有一个源文件要查看。它必须基于一个源文件构建一个内存映像。因此,代码从0开始,数据也从0开始。结果进入一个对象文件

    现在,链接器出现了,需要将许多对象文件组合成一个可执行文件(或内核映像,或其他)。它不能让每个人都处于0,它们会重叠。因此,它必须重新定位地址,以便将每个对象文件的数据量分配到一个唯一的范围

    然后,映像加载到虚拟内存中,操作系统可能有充分的理由希望使用“0”以外的地址作为基本虚拟地址。因此,在运行时,它希望重新定位所有内容


    最后,如果涉及到共享库,那么汇编器和链接器都不知道它们在运行环境中的位置,因此必须重新定位对它们的引用。

    您实际的编程问题是什么?您的程序是否因为重新定位问题而未运行?详细示例:可能的重复