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并且你需要使用中/大代码模型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |