|
发表于 2009-1-4 14:11:08
|
显示全部楼层
前面加了
#include <util/atomic.h>
编译出来就是这样了: 大家看看中断还能影响这个volatile吗?
20 main:
21 .LFB7:
22 .LM1:
23 /* prologue: function */
24 /* frame size = 0 */
25 .LM2:
26 0000 C29A sbi 56-32,2
27 .LM3:
28 0002 BA9A sbi 55-32,2
29 .LM4:
30 0004 88B7 in r24,88-32
31 0006 806C ori r24,lo8(-64)
32 0008 88BF out 88-32,r24
33 .LM5:
34 000a 15BC out 69-32,__zero_reg__
35 .LM6:
36 000c 81E0 ldi r24,lo8(1)
37 000e 84BD out 68-32,r24
38 .LM7:
39 0010 80E4 ldi r24,lo8(64)
40 0012 89BF out 89-32,r24
41 .LM8:
42 0014 83E0 ldi r24,lo8(3)
43 0016 85BD out 69-32,r24
44 .LM9:
45 0018 1092 0000 sts u1+3,__zero_reg__
46 001c 8091 0000 lds r24,u1+3
47 0020 8093 0000 sts u1+2,r24
48 .LM10:
49 /* #APP */
50 ; 27 "vol.c" 1
51 0024 7894 sei
52 ; 0 "" 2
53 .LVL0:
54 /* #NOAPP */
55 .L5:
56 .LBB7:
57 .LBB8:
58 .LBB9:
59 .LM11:
60 /* #APP */
61 ; 50 "d:/winavr/lib/gcc/../../avr/include/util/atomic.h" 1
62 0026 F894 cli
63 ; 0 "" 2
64 /* #NOAPP */
65 .LBE9:
66 .LBE8:
67 .LM12:
68 0028 8091 0000 lds r24,u1+3
69 .LVL1:
70 .LM13:
71 002c 2091 0000 lds r18,u1+2
72 .LVL2:
73 .LBB10:
74 .LBB11:
75 .LM14:
76 /* #APP */
77 ; 56 "d:/winavr/lib/gcc/../../avr/include/util/atomic.h" 1
78 0030 7894 sei
79 ; 0 "" 2
80 .LM15:
81 /* #NOAPP */
82 .LBE11:
83 .LBE10:
84 .LBE7:
85 .LM16:
86 0032 280F add r18,r24
87 0034 2093 0000 sts u1+1,r18
88 .LM17:
89 0038 2091 0000 lds r18,u1+1
90 .LVL3:
91 003c 30E0 ldi r19,lo8(0)
92 003e 90E0 ldi r25,lo8(0)
93 0040 880F lsl r24
94 0042 991F rol r25
95 .LVL4:
96 0044 2817 cp r18,r24
97 0046 3907 cpc r19,r25
98 0048 01F4 brne .L2
99 .LM18:
100 004a C29A sbi 56-32,2
101 004c 00C0 rjmp .L5
102 .L2:
103 .LM19:
104 004e C298 cbi 56-32,2
105 0050 00C0 rjmp .L5
106 .LFE7:
本贴被 ar3000a 编辑过,最后修改时间:2009-01-04,14:14:43. |
|