gpt4 book ai didi

c - 与位置无关的代码 (PIC) 有什么关系?

转载 作者:行者123 更新时间:2023-12-02 07:39:39 26 4
gpt4 key购买 nike

有人可以解释为什么我应该对编译与位置无关的代码感兴趣,以及我为什么要避免它?

最佳答案

血腥的细节取决于您的加载程序如何在您构建可执行文件或库时工作,但从某种意义上说,这对构建系统和编译器来说都是一个问题,而不是对您而言。

如果你真的想了解你需要考虑代码在执行开始之前放在地址空间的什么地方,以及你的芯片提供了哪些分支指令。分支是相对的还是绝对的?对数据段的访问是相对的还是绝对的?

  • 如果分支是绝对的,那么代码必须加载到一个可靠的地址,否则将无法工作。那是位置相关的代码。许多简单(或更旧)的操作系统通过始终将程序加载到同一位置来适应这一点。
  • 相对分支意味着可以放置在内存中的任何位置。那是位置无关代码。


  • 同样,您需要知道的是在您的平台上调用编译器和链接器的方法。

    关于c - 与位置无关的代码 (PIC) 有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439871/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com