quote:以下是引用youhm在2013-08-14 21:01:44的发言:
我做这个实验为了深入了解FB的调用机制,不过关于数据块寄存器内部运作还不是很清楚,我想应该这样的
对于FB块,DI寄存器非常重要,而被调用的FB块也要使用DI寄存器,所以调用FB块,系统要保存调用前的DINO,应该保存在块堆栈里,那为什么DBNO又会发生改变呢,我猜测压栈出栈必须经过DB寄存器,即块调用时DINO先保存到DB寄存器(或者就是交换DBNO和DINO),然后用DI寄存器打开当前FB的背景数据块,FB调用结束,之前保存的DINO出栈到DB寄存器,然后交换DBNO和DINO,还原调用前的DINO。
以上个人看法不一定正确,仅供参考。
thank you!