Page 163 - 《软件学报》2024年第6期
P. 163
陈文杰 等: 面向全分布式智能建筑系统应用程序的并行化编译方法 2739
5. SSM NextID = SSM ID + 1
6. Logical_Var ← “none”, Logical_Condition ← “none”
7. else
8. Logical_Var ← OutputVar
9. Logical_Condition ← “1”
10. SSM NextID = ID of the next module to execute when the condition is met
11. Logical_Var ← OutputVar
12. Logical_Condition ← “0”
13. SSM NextID = ID of the next module to execute when the condition is not met
14. end if
15. end for
3.4 底层指令序列生成算法
10. else if other SwarmL elements semantic module then …
为了生成面向异构平台的可执行目标代码, 需根据不同的平台特征和转换规则, 对逻辑链进行进一步变换和
处理, 生成平台可执行的目标代码. 本文以全分布式智能建筑系统平台 [2] 作为群体智能系统的一个典型例子来说
明逻辑链到目标指令程序的转换. 全分布式智能建筑系统提供了面向智能节点操作系统 [27] 的底层指令序列 (UIS)
来支持应用程序的运行时. 作为目标代码, 底层指令序列包含变量定义、赋值、查询、函数定义等基础操作. 建筑
运行控制任务被看作是按照一定顺序执行的底层指令的序列. 由于生成的语义模块是标准化的, 逻辑链和底层指
令序列之间可以建立映射关系. 可以为逻辑链中的每一种语义模块配置相应的底层指令, 可能是某一个指令, 也可
能是一系列指令构成的标准化组合. 具体实现方法如算法 2 所描述.
算法 2. 逻辑链到底层指令序列编译算法.
输入: 逻辑链;
输出: 底层指令序列.
1. for each standardized semantic module in the logic chain
2. SSM Type_ID → UIS Type_ID
3. if field-oriented variable definition semantic module then
4. SSM (VarField Name , VarField DataType ) → UIS (Var Name , Var Bytes , Var DataType , Var Number )
5. else if Swarm parallel statement semantic module then
6. SSM (NodeType, VPN) → UIS (Scope, hop count)
7. SSM (Computing attribute code) → UIS (Computing attribute set)
8. Table Map (SSM Parameter → (Ar, Aw, X)), Table Map ((Ar, Aw, X) → C language variables) →UIS (Name, number,
data type, and bytes of Ar, Aw, X variables)
9. SSM (Generated C language code)→UIS (content, verification results, and total length of C code)
11. end if
12. end for
13. Arrange and generate all instruction sequences in the order shown in the logic chain
首先, 遍历逻辑链中的每个语义模块, 根据语义模块的类型和编号生成对应的底层指令类型和编号. 然后, 逐
个将语义模块中的其他信息映射至底层指令中的信息. 以 Swarm 并行语句语义模块为例, 首先将语义模块类型映
射至底层指令序列类型, 根据语义模块中的节点类型和 VPN 映射生成底层指令中的作用域和跳数, 根据分布式计