<br />---------------------------------------------------------------------------------------------------<br />看来,在写c语言过程中,优化工作还得人工干预一下才好.<br />下面是另一个优化的例子: <br />---------------------------------------------------------------------------------------------------<br />----------------------------------------写法1: <br />382: H_LINE = TIME_H / 2 * 15 + TIME_M / 4 ; //时针定位="时"/2*15+"分"/4<br /> 078D 300F MOVLW 0xf<br /> 078E 00F1 MOVWF 0x71<br /> 078F 1003 BCF 0x3, 0<br /> 0790 0C30 RRF 0x30, W<br /> 0791 120A BCF 0xa, 0x4<br /> 0792 118A BCF 0xa, 0x3<br /> 0793 2768 CALL 0x768 (注意看这里,居然调用了乘法函数!)<br /> 0794 120A BCF 0xa, 0x4<br /> 0795 118A BCF 0xa, 0x3<br /> 0796 00F0 MOVWF 0x70<br /> 0797 0831 MOVF 0x31, W<br /> 0798 00F1 MOVWF 0x71<br /> 0799 1003 BCF 0x3, 0<br /> 079A 0CF1 RRF 0x71, F<br /> 079B 1003 BCF 0x3, 0<br /> 079C 0C71 RRF 0x71, W<br /> 079D 0770 ADDWF 0x70, W<br /> 079E 00A4 MOVWF 0x24<br /><br />----------------------------------------写法2: <br />383: <br />384: i = TIME_H / 2 ;<br /> 079F 1003 BCF 0x3, 0<br /> 07A0 0C30 RRF 0x30, W<br /> 07A1 00C1 MOVWF 0x41<br />385: j = i * 4 - i ;<br /> 07A2 00F0 MOVWF 0x70<br /> 07A3 1003 BCF 0x3, 0<br /> 07A4 0DF0 RLF 0x70, F<br /> 07A5 1003 BCF 0x3, 0<br /> 07A6 0D70 RLF 0x70, W<br /> 07A7 00F0 MOVWF 0x70<br /> 07A8 0841 MOVF 0x41, W<br /> 07A9 0270 SUBWF 0x70, W<br /> 07AA 00C0 MOVWF 0x40<br />386: i = TIME_M / 4 ;<br /> 07AB 0831 MOVF 0x31, W<br /> 07AC 00F0 MOVWF 0x70<br /> 07AD 1003 BCF 0x3, 0<br /> 07AE 0CF0 RRF 0x70, F<br /> 07AF 1003 BCF 0x3, 0<br /> 07B0 0C70 RRF 0x70, W<br /> 07B1 00C1 MOVWF 0x41<br />387: H_LINE = j - i ; //时针定位="时"/2*15+"分"/4<br /> 07B2 0240 SUBWF 0x40, W<br /> 07B3 00A4 MOVWF 0x24<br /><br />
|