gpt4 book ai didi

c++ - GCC -fPIC 选项

转载 作者:bug小助手 更新时间:2023-10-28 01:31:11 34 4
gpt4 key购买 nike

我读过 GCC's Options for Code Generation Conventions ,但无法理解“生成与位置无关的代码 (PIC)”的作用。请举个例子来解释一下这是什么意思。

最佳答案

位置无关代码意味着生成的机器代码不依赖于位于特定地址才能工作。

例如跳跃会以相对而非绝对的形式生成。

伪组装:

PIC:无论代码是在地址 100 还是 1000,这都会起作用

100: COMPARE REG1, REG2
101: JUMP_IF_EQUAL CURRENT+10
...
111: NOP

非 PIC:仅当代码位于地址 100 时才有效

100: COMPARE REG1, REG2
101: JUMP_IF_EQUAL 111
...
111: NOP

编辑:回应评论。

如果您的代码是使用 -fPIC 编译的,则它适合包含在库中 - 库必须能够从其在内存中的首选位置重定位到另一个地址,在您的库地址处可能有另一个已加载的库喜欢。

关于c++ - GCC -fPIC 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5311515/

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