控制流分析
控制流分析(Control flow analysis)简称CFA,是一种确认程式控制流程的静态代码分析技术。控制流程会以控制流图来表示。对于函数程式语言及物件导向程式设计,CFA都是指计算控制流程的演算法。
控制流分析一词最早是由Neil D. Jones[1]及Olin Shivers[2]开始使用。
对于像是Scheme之类有高阶函数的程式语言,不一定可以从程式中直接看出函数呼叫的目标,例如以下的程式片段
(lambda (f) (f x))
根据上述程式无法确认程序f
是指什么,此情形下的控制流分析需考虑何时会执行此程式码,及当时的传入值。
相关条目
参考资料
- ^ Neil D. Jones, Flow analysis of lambda expressions, Automata, Languages and Programming, 1981: 114–128, doi:10.1007/3-540-10843-2_10
- ^ Shivers, Olin, Control-flow analysis in Scheme, Proceedings of the ACM SIGPLAN'88 Conference on Programming Language Design and Implementation (PLDI), SIGPLAN Notices, Vol.23, No.7, 1988: 164–174, doi:10.1145/53990.54007,
Reprinted in \emph{20 Years of the ACM SIGPLAN Conference on Programming Language Design and Implementation (1979--1999): A Selection
外部链接
- for textbook intraprocedural CFA in imperative languages
- CFA in functional programs (survey) (页面存档备份,存于互联网档案馆)
- for the relationship between CFA analysis in functional languages and points-to analysis in imperative/OOP languages (页面存档备份,存于互联网档案馆)
这是一篇电脑科学小作品。您可以通过编辑或修订扩充其内容。 |