基于区域的内存模型(RBMM)在LLVM抽象解释中的应用
1. 内存操作语义
在内存操作方面,有着明确的语义规则。
- 内存分配 :当调用 makeref(rgn, n) 时,会将新的内存对象添加到 alloc 中,并将 nextAddr 增加 n 。同时,程序状态 rgnAddrs 会记录引用 ref 归属于区域 rgn 。
- 内存释放 : freeref(rgn, ref) 会识别与引用 ref 关联的内存对象,并将其从 alloc 中删除。若该内存对象未分配或已释放,则返回错误状态。
- 指针算术 : (rgn2, ref2) := gepref(rgn1, ref1, n) 模拟了 CrabIR 中的指针算术。与 C 指针算术类似, gepref 不访问内存,而是通过将偏移量 n 加到输入引用 ref1 上得到新引用 ref2 。不同的是,引用变量 ref1 和 ref2 分别与区域变量 rgn1 和 rgn2
超级会员免费看
订阅专栏 解锁全文
34

被折叠的 条评论
为什么被折叠?



