恭喜,你发布的帖子
发布于 2023-02-06 17:42:13
36楼
我实现的自动分配DB比较麻烦,目前不想拿出来献丑。不过讨论下还是有必要的。
这个自动分配DB如果是需要全扫描才有效的话,我觉得就不用实现了,太......难受。
原理很简单,每个DB都有一个索引,这个索引是全局的,可以专门使用规划一个区域来做。当然我没有这样做,因为随着DB的实现发现其实用这个不断生长的DB里面的数据来存放就可以了。唯一需要规划索引的地方是主程序里面调用子程序时分配的DB索引。仅此一个。
如果索引有了,那么判断索引是不是初值,是初值0就说明需要分配一个索引,分配后就不是0值了。不是0值说明已经分配过了,不用重新分配。这样即使一个扫描内有些子程序按条件没有执行也不会搅乱DB的归属。也就不需要全扫描了。
目前实现的功能是这些:1、实现了子程序背景数据块的自动分配。2、在1的基础上实现了14个扩展Temp区,用于程序temp区不够用时做temp用。3、扩展temp既可以做普通temp用,当子程序接口数量不够用时也可以做接口扩展用。
使用需要遵循特定的步骤顺序,每个需要使用背景DB的子程序有一些固定程序在开头几个段和结尾两个段。
现在看来有些实现扩大化了,我做实验的ST20在不做其他程序时就已经用掉很大一块存储器。 扫描周期忘了多少了,应该还可以接受。
--------------------------------------------------------------------
现在暂时没有使用200Smart的项目,如果没有文档记录我都快不记得具体实现了啥了。
这个实现减少了子程序调用的深度,因为子程序本身固定调用了几个子程序。
请填写推广理由:
分享
只看
楼主