阅读ucosii的代码,发现了一个小技巧。就是在使得任务进入就绪状态的时候,有:
OSRdyGrp|=OSMapTbl[prio>>3];
OSRdyTbl[prio>>3]|=OSMapTbl[prio&0x07];
这样两行,其实>>3就是除以8,而&0x07就是 取模运算 mod 8 或者 % 8.
后一个技巧是我新学到的。任何取模运算,只要是2的整数幂,都可以用这个技巧。比如,对8取模运算,就是 位与 &0x7。
对4运算则是,&0x3。 其实说白了,就是192,去除19剩余2,就是对10取模,去除1剩余92就是对100取模。
|