恭喜,你发布的帖子
发布于 2019-08-20 15:17:19
7楼
这个概念以后还真得好好去理解下,如果不想在停止调用子程序时出现输出保持、数据危险这样一种情况,有什么好办法可以避免,芳季大师能否指点一二。
OUT变量是在运行过程中产生结果然后输出,在没有运行的时候,我是指子程序有调用,但是子程序里面的某
movw vw0 lw0-------假设lw0是一个out变量
指令没有执行。那么子程序结束的时候还是要给一个值给out变量交差的。这个时候哪来的值了。这个lw0较早前谁使用过,就留着了那个时候的值了。
如果当前唯有这个子程序使用过lw0,那么就会遗留着子程序上次调用时候的值。感觉好像是值被保留下来了。这就是很多人调用一次子程序可以用,调用两次,第二个就不能用了,的原因。
如果当前有多个其他子程序也使用了这个lw0,那么谁用过它,那就天知道了。所以这个时候感觉这个out变量就乱了。
用in/out变量解决。把保存的责任传到端口外的参数负责。如果这个参数也是一个外层子程序的in/out参数,那么外层就再传到更外层的父级程序负责。就像你这两级调用的情况。直至到外围遇到有全局(或者独享的变量)变量愿意装载这个变量,而不会受到别的影响。
这样,变量才得以保存下来。
请填写推广理由:
分享
只看
楼主