1-模型概述
3个跳转
向下 down
向上 up
平移 move
4个区:
func(…){
# 函起区 func_start
while{
# 循起区 while_start
func(…);
# 循结区 while_end
}
# 函结区 func_end
}
5个状态
起后 AFTER_BEGIN :[func_start, while_start]
下后 AFTER_DOWN : [func_start, while_start]
循后 AFTER_MOVE : [while_end, while_start]
上后 AFTER_UP : [while_end, func_end]
结前 BEFORE_END : [while_end, func_end]
简单校检
假设有n次跳转,那么:
- 有(n+2)个状态;
- 2*(n+2)个区操作;
- 所有操作对象都出现两次。
2-示例
| 序号 | 状态 | 操作区域 | 操作对象 |
|---|---|---|---|
| 1 | BEGIN_AFTER | 0.func_start; 0.while_start; | 2 |
| 2 | DOWN_AFTER | 1.func_start; 1.while_start; | 4 |
| 3 | DOWN_AFTER | 2.func_start; 2.while_start; | 12 |
| 4 | UP_AFTER | 2.while_end; 2.func_end; | 12 |
| 5 | MOVE_AFTER | 1.while_end; 1.while_start; | 4&5 |
| 6 | UP_AFTER | 1.while_end; 1.func_end; | 5 |
| 7 | END_BEFOR | 0.while_end; 0.func_end; | 2 |
本文介绍了一种基于跳转指令的状态管理机制,包括不同类型的跳转(向下、向上和平移),并定义了五个关键状态(起后、下后、循后、上后和结前)。通过具体示例说明了如何在函数调用与循环中应用这些概念。
740

被折叠的 条评论
为什么被折叠?



