控制流分析
控制流分析(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 (頁面存檔備份,存於互聯網檔案館)
這是一篇電腦科學小作品。您可以透過編輯或修訂擴充其內容。 |