别名的SSA转储格式

编程入门 行业动态 更新时间:2024-10-27 14:24:06
本文介绍了别名的SSA转储格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我无法理解SSA图的IR转储中的不同关键字。这些关键字在存在别名时显示。我是从凤凰车间材料的幻灯片中取样并附上相同的。关键词的含义我不清楚:(1)静态,(2)间接和(3)chi算子。 我也有兴趣了解以下IR的含义:

Hi,I am not able to understand the different keywords in IR dump of SSA graph. These keywords are shown up in the presence of aliases. I am taking example from the slides of Phoenix workshop material and attaching the same.  Keywords whose meaning is not clear to me are: (1) static, (2) indirect and (3) chi operator. I am also interested in understanding the meaning of following IR:

(1)$ L1:{* StaticTag}< 1>,{* NotAliasedTag}< ; 2>,{* UndefinedTag}< 3> 推荐答案

CHI是部分定义合并点。您可以拥有"必须"的部分定义。其余的是正确的。

我们也使用CHI代替字段/结构

struct MyStruct {int x; int y]

void foo(){

MyStruct s;

sx = 4;

}

IR将

s< 1> = initial

s.x< 2 - ; = ASSIGN 4

s< 3 GT; = CHI s.x< 2>,s< 1>

因为sx是s的部分def,s具有新值,该值是旧值(s< 1>)和新写入的字段(s.x< 2>)的组合。我通常首先解释结构案例然后告诉人们如果你眯着眼睛搞笑,你可以让* p看起来像一个字段存储,你要做的就是将内存划分为桶(虚拟变量),然后只要你知道哪个桶p指向,写入* p有点像写入那个桶的"字段",你把CHI放在那里说"嘿,我摸了一桶",这样如果你有一些东西的使用在桶中,你可以将它连接到chi上的def,因为你至少知道它是最后一次触摸桶。

"StaticTag"表示任何具有非本地生命周期的存储(静态字段,全局变量等)。

"IndirectTag"表示已经"转义"的所有位置,无论运行何种别名分析。通过最简单的分析,IndirectTag可以有效地识别地址采集位置。通过更复杂的分析,对于最终在"IndirectTag"中的地址,您必须获取其地址,然后以分析失去跟踪的方式使用地址。使用我们运行的当前别名分析阶段,其示例是将地址存储在堆中或将其传递给外部函数。

更多推荐

别名的SSA转储格式

本文发布于:2023-10-15 01:27:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1492834.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:别名   格式   SSA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!