恭喜,你发布的帖子
发布于 2021-11-23 10:56:50
8楼
在子程序中用*LDXX访问存储区虽然最终访问的是除单个位、 HC、L 或累加器的存储区,但我在想指令执行先必然要访问LDXX,然后再去访问它指向的存储区,老200的手册里有指令执行时间的说明,其明确指出访问L会有时间增加(比较MOVW 1 VW0和MOVW 1 LW0后者会有时间增加)。
子程序中全部使用L区,包括用L区做指针间接访问其它存储区会给子程序的移植带来极大的好处,但缺点是L区太小了,只有通过指针间接访问的形式获得子程序的过程数据更大更久的存放区域(更久是指需要保存一次扫描以上的数据)。
鉴于上述情况考虑到过程数据区要够大,访问速度要快还要移植性好我用了这么一种方法:在子程序中不用L区用V区符号编程子程序做成库并分配库存储区,子程序开始时先把其自身调用需要的过程数据从V区搬入库存储区,处理完毕再搬回去原过程数据存放的V区,多次子程序调用都分别对应有自己的过程数据区互不影响,但对于成库的子程序而言始终使用的是库存储区且是V区,因此速度快也可移植。再借助楼主他们对V区自主分配的技巧相信在子程序中不用L用库内存一样能实现子程序多次调用对V区的合理分配及使用。
7楼芳季问的第二个是不是,回答是(楼主也是用的TEMP型的L区做过程数据临时存储,子程序末段把这些过程数据存入了每次调用分配的相应V区)。我前面的那种做法与你7楼最后的做法是一样的,并上机实测过且亲身体验到V比L快。不过是很久以前在老200上试验的,好像在哪个帖子里还提过这事。
请填写推广理由:
分享
只看
楼主