LLVM源码--PointerIntPairInfo类
来源:互联网 发布:php图片上传 编辑:程序博客网 时间:2024/06/05 12:55
PointerIntPairInfo类是个比较特殊的类,这个类没有成员,是辅助PointerIntPair类,而PointerIntPair只有一个成员,这个成员的类型是个unsigned int Value, PointerIntPairInfo定义了了几个枚举值,这几个枚举值类型是unsigned int。它们的作用是用来提取Value中的信息,Value是个unsigned int ,Value的信息分布 高位->低位:指针->整数->其他作用的位
enum : uintptr_t {
/// PointerBitMask - The bits that come from the pointer.
NumLowBitsAvailable表示一个unsigned int除去指针的位数后剩下的位数,unsigned int有32位,比如NumLowBitsAvailable=5,那么PointerBitMask=1(27个)0(5个)
表示高位的27位表示指针,后面的5位有其他用处
PointerBitMask =
~(uintptr_t)(((intptr_t)1 << PtrTraits::NumLowBitsAvailable) - 1),
/// IntShift - The number of low bits that we reserve for other uses, and
/// keep zero.
比如NumLowBitsAvailable=5,表示指针用了27位,IntBits表示整数用了多少位, IntShift表示除了 指针,整数 后的位数
IntShift = (uintptr_t)PtrTraits::NumLowBitsAvailable - IntBits,
/// IntMask - This is the unshifted mask for valid bits of the int type.
比如 IntBits=3,IntMask =0(29个)1(3个)
IntMask = (uintptr_t)(((intptr_t)1 << IntBits) - 1),
// ShiftedIntMask - This is the bits for the integer shifted in place.
这个主要是用来获取一个unsigned int整数的部分
ShiftedIntMask = (uintptr_t)(IntMask << IntShift)
};
- LLVM源码--PointerIntPairInfo类
- LLVM 源码分析 (一) pass 类
- LLVM 源码分析 (二)ModulePass 类
- clang llvm 源码编译安装
- LLVM每日谈之六 LLVM的源码结构
- LLVM
- LLVM
- llvm
- LLVM
- LLVM
- LLVM
- LLVM
- LLVM
- LLVM
- llvm源码父类的设计方式以及其他设计方式
- LLVM 源码分析(三)ImmutablePass
- LLVM 源码分析(四)FunctionPass
- LLVM 源码分析(五)BasicBlockPass
- easyui-datagrid 合并单元格
- 【专题】最长不下降子序列
- python3-FileIO和异常
- mysql修改用户名密码
- mybatis中#和$的区别
- LLVM源码--PointerIntPairInfo类
- 技术网址分类记录
- 安装redis扩展
- 第十一章 缓存机制
- 7列表控件的操作
- Java数据结构之链表_动力节点Java学院整理
- C#:ref(引用传递参数)和out(输出参数))
- Proxy 代理模式 对象结构型模式
- ES6 学习之promise 基本用法