发布于 2012-06-27 10:51:47
3楼
STL在执行数学运算的时候,进行运算的对象其实是累加器ACCU1和ACCU2,最大长度是32位。
具体执行时根据指令不同,决定运算的长度。
如果是整型数指令,比如 +I 那么就是ACCU1-L与ACCU2-L两个累加器的低16位看做整型数进行相加,结果放入ACCU1中。
因此无论是byte、word、dword或者INT、real在用L指令装载到累加器后,都不会影响+I指令的执行。
因此都可以进行运算,不会提示指令出错。(当然装载的数据类型不一致,计算的结果是不对的)
还有就是WORD和INT的区别,word表示0~65535而INT表示-32768~32767。
参与运算的数据(包括结果)如果在0-32767内,WORD和INT效果确实是一样的。
但如果楼主进行负数计算,定义为word就不行了。