加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Clang / LLVM中的CodeModel是指什么?

发布时间:2020-12-16 10:04:32 所属栏目:百科 来源:网络整理
导读:我一直在查看Clang / LLVM源代码,我遇到了 CodeGenOptions 的CodeModel属性. 根据this method,有效值显示为:“
我一直在查看Clang / LLVM源代码,我遇到了 CodeGenOptions的CodeModel属性.

根据this method,有效值显示为:“小”,“内核”,“中”和“大”.

这个属性控制什么?

如何为我的应用程序选择正确的值?

解决方法

代码模型是来自AMD64 ABI的术语(有关更多信息,请参见 https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf中的3.5.1).

简而言之 – x64-64指令中的大多数偏移都是PC相关的,但是指令内的直接字段只有32位长.因此,如果数据位于距离代码“远”的位置(超过32位),则无法在指令内使用立即字段来有效编码偏移量,并应明确计算地址.代码模型对代码和数据的相对位置提供了各种限制.

如果您正在静态编译所有内容,那么’small’是安全的(默认).如果你是JIT,那么一切都是可能的,特别是如果启用ASLR并且你需要使用中/大代码模型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读