【问题标题】:How to determine the type of alias analysis required?如何确定所需的别名分析类型?
【发布时间】:2020-01-27 00:13:50
【问题描述】:

附件是一个家庭作业问题,是否需要内容敏感和/或流敏感分析来查看 src 可以指向哪些值。 它给出了内容敏感和流敏感分析的定义,但是你如何解释它是内容敏感(结果取决于调用堆栈)还是内容不敏感(结果不取决于调用堆栈)和流敏感(看在程序中的每个点)和流不敏感(查看程序执行中的任何点)?

【问题讨论】:

    标签: compiler-construction code-analysis static-analysis static-code-analysis


    【解决方案1】:

    需要流敏感和上下文不敏感的分析。

    在第 3 行,流敏感分析确保 src 仅指向函数调用的实际参数。否则它也可能指向本地。

    在 10 和 11 的两个上下文中,src 都指向 a。(不区分上下文的分析就足够了)

    【讨论】:

    • 但是描述说,上下文相关分析将检查调用堆栈上的内容。并且“a”是从外部调用堆栈传入的,这不会使它与上下文相关吗?与“本地”相反,它不是从外部堆栈传入的
    • @user1095332,上下文相关意味着区分调用上下文。将呼叫与第 10 行、第 11 行区分开来。上下文不敏感并不意味着它不知道传递了什么值。它结合了所有传递给分析的值。
    • 调用栈与激活记录不同。只是为了匹配调用并使用返回调用堆栈
    猜你喜欢
    • 2015-04-21
    • 2020-08-12
    • 1970-01-01
    • 2017-08-25
    • 2016-07-02
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多