# SoftAnalysisAndTest-Project2 **Repository Path**: realssd/soft-analysis-and-test-project2 ## Basic Information - **Project Name**: SoftAnalysisAndTest-Project2 - **Description**: 软件分析与测试第二次作业 C语言代码的有限状态机识别 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-18 - **Last Updated**: 2026-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LLVM转EFSM程序 ## 输入 LLVM IR文件 ## 处理 只考虑llvm中的跳转指令,对应C中的 ```c if for while __func_call return ``` 在llvm中,跳转指令包括 ```llvm br switch call ret ``` ### 处理步骤 1. 函数块提取`define @ {...}` 2. 函数内块划分与块提取 3. 可见函数间块连接 4. 控制流图构建 5. 状态机模式识别 6. 数据流融合判定状态机条件 7. (optional) 测试样例覆盖 ### 状态机模式 switch模式 if 模式 函数指针模式 - 确定状态机入口与出口(两个及以上的状态) > 状态机模式,单一变量多可能跳转 > - 单入口 > - 多路径 > - 单出口 > - 出口包含回到入口的选项 > - 路径中可能改变单一变量的值 入口和出口的判定--就近生效--最小环路 - 嵌套状态机识别 - 确定状态变量 - 状态合并 - 确定状态迁移的路径 ## 输出