资讯详情

SSA是什么?

[WebKit] JavaScriptCore分析-高级篇(1) SSA (static single assignment) - jlins - 博客园

在编译器优化领域,数据结构的选择将直接影响程序优化的有效性。

SSA编译器使用的中间语言(intermediate language), 作为编译优化的基础(也是DFG JIT和Control Dependence Graph用来表示程序的数据流和控制流。

众所周知,编译器是这样工作的:分析、优化、生成代码。

中间会使用到一个中间语言的进行过度,好的中间语言一定要

SSA简介

编译优化领域的关键问题是如何为循环生成有效的机器代码。

要处理大量的控制流操作,都集中在一阶控制流问题上, 也就是说,直线代码(Straight-line code)。

SSA变量不会改变,它们只会被指定一次。

给一个变量一个新值会导致一个新的绑定。

例如,以下函数:

function clamp (x, lower, upper) {    if (x < lower)      x = lower;    else if (x > upper)      x = upper;    return x;  }

SSA转换结果如下:

entry:    x0, lower0, upper0 = args;    goto b0;   b0:    t0 = x0 < lower0;    goto t0 ? b1 : b2;   b1:    x1 = lower0;    goto exit;   b2:    t1 = x0 > upper0;    goto t1 ? b3 : exit;      b3:    x2 = upper0;    goto exit;      exit:    x4 = phi(x0, x1, x2);    return x4;  

SSA将过程区分为几个基本块(basic blocks),每一块在结尾或条件允许,或无条件转向其他分支。临时变量也有自己的名称,以便以后优化。

标签: 电感式接近传感器ssa

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台