换成新名就成 SSA 了

👁️ 1 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段:三地址码用元组表示——(op, dst, a, b),如 ("+","t2","a","t1") 是 t2 = a + t1、("const","t1",2,None) 是 t1 = 2。一个程序是这样一串元组。count_ops 数几条、temps_of 交回定义的临时名。)

is_ssa 同上。把第二次的 t 换成 t2 后再判:

def count_ops(prog):
    """三地址码程序一共几条指令。"""
    return len(prog)


def temps_of(prog):
    """按出现顺序交回程序里定义的临时变量名(每条 IR 的 dst)。"""
    return [t[1] for t in prog]


def is_ssa(prog):
    ds = [t[1] for t in prog]
    return len(ds) == len(set(ds))

prog = [("const", "t", 1, None), ("+", "t2", "t", "a")]
print(is_ssa(prog))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论