gotofly100 发表于 2010-6-21 17:50:53

一种初始化小段数组的方法

单片机编程里用到很多小段数组,一般不超过20,用for和memset感觉很慢,呵呵。
发现pm+编译的话直接写编译出来还不错,呵呵

方法如下:
#define   CLR1(a)      a=0
#define   CLR2(a)      CLR1(a);a=0
#define   CLR3(a)      CLR2(a);a=0
#define   CLR4(a)      CLR3(a);a=0
#define   CLR5(a)      CLR4(a);a=0
#define   CLR6(a)      CLR5(a);a=0
#define   CLR7(a)      CLR6(a);a=0
#define   CLR8(a)      CLR7(a);a=0
#define   CLR9(a)      CLR8(a);a=0
#define   CLR10(a)      CLR9(a);a=0
#define   CLR11(a)      CLR10(a);a=0
#define   CLR12(a)      CLR11(a);a=0
#define   CLR13(a)      CLR12(a);a=0
#define   CLR14(a)      CLR13(a);a=0
#define   CLR15(a)      CLR14(a);a=0
#define   CLR16(a)      CLR15(a);a=0
#define   CLR17(a)      CLR16(a);a=0
#define   CLR18(a)      CLR17(a);a=0
#define   CLR19(a)      CLR18(a);a=0
#define   CLR20(a)      CLR19(a);a=0

看看结果:
326   CLR10(b);
032B         0A43         XOR   A,A
032D         E9B4FE         MOV   !_b,A
0330         E9B5FE         MOV   !_b+0x1,A
0333         E9B6FE         MOV   !_b+0x2,A
0336         E9B7FE         MOV   !_b+0x3,A
0339         E9B8FE         MOV   !_b+0x4,A
033C         E9B9FE         MOV   !_b+0x5,A
033F         E9BAFE         MOV   !_b+0x6,A
0342         E9BBFE         MOV   !_b+0x7,A
0345         E9BCFE         MOV   !_b+0x8,A
0348         E9BDFE         MOV   !_b+0x9,A

理想,呵呵。

sophie0403 发表于 2010-6-24 08:41:33

写法有意思~~顶LZ
页: [1]
查看完整版本: 一种初始化小段数组的方法