最近,沿指令的几个贴子都比较热。根据大家的发贴的情况看,认为沿指令不好用、有问题的不在少数,也有重量级的工程师认为沿指令存在不可靠不稳定的问题。
对沿指令的偏见由来已久,根子很深,基础很实。但是没有见过真正经得起验证的例子来说明沿指令有问题。
一般的问题大概是这样的:在某个地方使用了沿指令,没有达到编程者的要求,或者期望的值没有出现;去掉沿指令、或者把沿指令移到别的地方,问题解决,就认定为是沿指令有问题,不可靠不稳定。
能不能把一些无关的程序段去掉,只留问题部分的程序?这样的例子有出现过吗?
本人也举不出这样的例子。因为沿指令根本不存在不可靠不稳定的问题。
本帖,在“公认”为沿指令再易出问题的地方,使用实例来证明沿指令的稳定与可靠,还原其本来面目。
举例之前,几个事情讲在前面:
1、这里讲的是200smart的指令,不作横向比较。横向比较,问题就偏重在使用习惯、可移植等上面。使用习惯不是指令的问题,没道理好讲;移值,就算是200和200smart之间,也只能做到大部分兼容。
2、为什么要用沿指令?完全可以不用,或自己写相同功能的程序段来代替。不错,大部分指令都不是必须,可以使用其它指令的组合来实现。就算当年很难取代的定时器,自从出了32位1ms的公共时基后,普通的T开头的定时器,也变得可有可无。所以这个,也不是本贴希望讨论的话题。
3、关于有意义、没意义。有人会提出来,这样做有意义吗?谁会这样写程序?
貌似没有“意义”的指令可以写出许多,如:
NOP指令,有多少人认为它的存在是有意义的?
ANDW AC0,AC0,自已和自己作与操作,值根本不会起变化,使用它有意义吗?
如果程序不是你写的,有没有意义无从谈起。
如果你是明明白白使用的,这些指令就是很有意义的。