PICC18
Attila Sass
attila.sass at palettainvent.hu
Thu Aug 11 14:16:30 CEST 2005
Szia!
Nem lehet, hogy valahol máshol van a gond? Persze nálam is csinált már
marhaságokat a fordító (főleg ha van optimalizáció), olyan is volt, hogy
attól, mert egy teljesen másik helyen betettem egy asm("nop")-ot,
megjavult.
Nem tudom mi van nálad, de nálam az alábbi "dummy" programot:
--------
#include <pic18fxx2.h>
void main(void)
{
while (1);
}
int l;
void low_priority interrupt handler()
{
int j,k,l,m,n,o,p;
j = 32;
k = 12;
m = 21;
n = 43;
o = 454;
p = o*5 +m;
l = k+j-m*o%p;
}
void interrupt hhandler()
{
int j,k,l,m,n,o,p;
j = 321;
k = 123;
m = 213;
n = 436;
o = 4524;
p = o*5 +m;
l = k+j+m%o*p;
}
--------
Úgy néz ki rendben lefordítja (8.20pl4):
Line Address Opcode Label Disassembly
1 0000 EF12 GOTO 0x24
2 0002 F000 NOP
3 0004 FFFF NOP
4 0006 FFFF NOP
5 0008 CFD8 MOVFF STATUS, 0x5ff
6 000A F5FF NOP
7 000C CFE0 MOVFF BSR, saved_bsrh
8 000E F008 NOP
9 0010 EFF5 GOTO 0x1ea
10 0012 F000 NOP
11 0014 FFFF NOP
12 0016 FFFF NOP
13 0018 CFD8 MOVFF STATUS, 0x5f3
14 001A F5F3 NOP
15 001C CFE0 MOVFF BSR, saved_bsrl
16 001E F009 NOP
17 0020 EF82 GOTO 0x104
18 0022 F000 NOP
19 0024 EE00 LFSR 0, 0xe2
20 0026 F0E2 NOP
21 0028 EE11 LFSR 0x1, 0x100
22 002A F000 NOP
23 002C EC68 CALL 0x2d0, 0
24 002E F001 NOP
25 0030 EF1A GOTO main
26 0032 F000 NOP
27 0034 FFFF main NOP
28 0036 D004 BRA 0x40
29 0038 D000 BRA 0x3a
30 003A D7FF BRA 0x3a
31 003C EF12 GOTO 0x24
32 003E F000 NOP
33 0040 D7FB BRA 0x38
34 0042 FFFF handler NOP
35 0044 D05E BRA 0x102
36 0046 0E20 MOVLW 0x20
37 0048 0100 MOVLB 0
38 004A 6FF2 MOVWF j, BANKED
39 004C 6BF3 CLRF 0xf3, BANKED
40 004E 0E0C MOVLW 0xc
41 0050 6FF4 MOVWF k, BANKED
42 0052 6BF5 CLRF 0xf5, BANKED
43 0054 0E15 MOVLW 0x15
44 0056 6FF8 MOVWF m, BANKED
45 0058 6BF9 CLRF 0xf9, BANKED
46 005A 0E2B MOVLW 0x2b
47 005C 6FFA MOVWF n, BANKED
48 005E 6BFB CLRF 0xfb, BANKED
49 0060 0EC6 MOVLW 0xc6
50 0062 6FFC MOVWF o, BANKED
51 0064 0E01 MOVLW 0x1
52 0066 6FFD MOVWF 0xfd, BANKED
53 0068 0E05 MOVLW 0x5
54 006A 6E02 MOVWF 0x2, ACCESS
55 006C 6A03 CLRF 0x3, ACCESS
56 006E C0FC MOVFF o, powerup
57 0070 F000 NOP
58 0072 C0FD MOVFF 0xfd, used_btemp4
59 0074 F001 NOP
60 0076 EC58 CALL 0x2b0, 0
61 0078 F001 NOP
62 007A 51F8 MOVF m, W, BANKED
63 007C 2404 ADDWF intlevel0, W, ACCESS
64 007E 6FFE MOVWF p, BANKED
65 0080 51F9 MOVF 0xf9, W, BANKED
66 0082 2005 ADDWFC 0x5, W, ACCESS
67 0084 6FFF MOVWF 0xff, BANKED
68 0086 C0FC MOVFF o, 0x2
69 0088 F002 NOP
70 008A C0FD MOVFF 0xfd, 0x3
71 008C F003 NOP
72 008E C0F8 MOVFF m, powerup
73 0090 F000 NOP
74 0092 C0F9 MOVFF 0xf9, used_btemp4
75 0094 F001 NOP
76 0096 EC58 CALL 0x2b0, 0
77 0098 F001 NOP
78 009A C004 MOVFF intlevel0, powerup
79 009C F000 NOP
80 009E C005 MOVFF 0x5, used_btemp4
81 00A0 F001 NOP
82 00A2 C0FE MOVFF p, 0x2
83 00A4 F002 NOP
84 00A6 C0FF MOVFF 0xff, 0x3
85 00A8 F003 NOP
86 00AA EC42 CALL 0x284, 0
87 00AC F001 NOP
88 00AE C0F4 MOVFF k, 0x2
89 00B0 F002 NOP
90 00B2 C0F5 MOVFF 0xf5, 0x3
91 00B4 F003 NOP
92 00B6 51F2 MOVF j, W, BANKED
93 00B8 2602 ADDWF 0x2, F, ACCESS
94 00BA 51F3 MOVF 0xf3, W, BANKED
95 00BC 2203 ADDWFC 0x3, F, ACCESS
96 00BE 5000 MOVF powerup, W, ACCESS
97 00C0 5C02 SUBWF 0x2, W, ACCESS
98 00C2 6FF6 MOVWF l, BANKED
99 00C4 5001 MOVF used_btemp4, W, ACCESS
100 00C6 5803 SUBWFB 0x3, W, ACCESS
101 00C8 6FF7 MOVWF 0xf7, BANKED
102 00CA C5E8 MOVFF 0x5e8, PRODL
103 00CC FFF3 NOP
104 00CE C5E9 MOVFF 0x5e9, PRODH
105 00D0 FFF4 NOP
106 00D2 C5EA MOVFF 0x5ea, powerup
107 00D4 F000 NOP
108 00D6 C5EB MOVFF 0x5eb, used_btemp4
109 00D8 F001 NOP
110 00DA C5EC MOVFF 0x5ec, 0x2
111 00DC F002 NOP
112 00DE C5ED MOVFF 0x5ed, 0x3
113 00E0 F003 NOP
114 00E2 C5EE MOVFF 0x5ee, intlevel0
115 00E4 F004 NOP
116 00E6 C5EF MOVFF 0x5ef, 0x5
117 00E8 F005 NOP
118 00EA C5F0 MOVFF 0x5f0, 0x6
119 00EC F006 NOP
120 00EE C5F1 MOVFF 0x5f1, 0x7
121 00F0 F007 NOP
122 00F2 C5F2 MOVFF 0x5f2, WREG
123 00F4 FFE8 NOP
124 00F6 C009 MOVFF saved_bsrl, BSR
125 00F8 FFE0 NOP
126 00FA C5F3 MOVFF 0x5f3, STATUS
127 00FC FFD8 NOP
128 00FE 0010 RETFIE 0
129 0100 FFFF NOP
130 0102 D7A1 BRA 0x46
131 0104 FFFF NOP
132 0106 CFE8 MOVFF WREG, 0x5f2
133 0108 F5F2 NOP
134 010A C007 MOVFF 0x7, 0x5f1
135 010C F5F1 NOP
136 010E C006 MOVFF 0x6, 0x5f0
137 0110 F5F0 NOP
138 0112 C005 MOVFF 0x5, 0x5ef
139 0114 F5EF NOP
140 0116 C004 MOVFF intlevel0, 0x5ee
141 0118 F5EE NOP
142 011A C003 MOVFF 0x3, 0x5ed
143 011C F5ED NOP
144 011E C002 MOVFF 0x2, 0x5ec
145 0120 F5EC NOP
146 0122 C001 MOVFF used_btemp4, 0x5eb
147 0124 F5EB NOP
148 0126 C000 MOVFF powerup, 0x5ea
149 0128 F5EA NOP
150 012A CFF4 MOVFF PRODH, 0x5e9
151 012C F5E9 NOP
152 012E CFF3 MOVFF PRODL, 0x5e8
153 0130 F5E8 NOP
154 0132 D787 BRA handler
155 0134 FFFF hhandler NOP
156 0136 D058 BRA 0x1e8
157 0138 0100 MOVLB 0
158 013A 0E41 MOVLW 0x41
159 013C 6FE4 MOVWF j, BANKED
160 013E 0E01 MOVLW 0x1
161 0140 6FE5 MOVWF 0xe5, BANKED
162 0142 0E7B MOVLW 0x7b
163 0144 6FE6 MOVWF k, BANKED
164 0146 6BE7 CLRF 0xe7, BANKED
165 0148 0ED5 MOVLW 0xd5
166 014A 6FEA MOVWF m, BANKED
167 014C 6BEB CLRF 0xeb, BANKED
168 014E 0EB4 MOVLW 0xb4
169 0150 6FEC MOVWF n, BANKED
170 0152 0E01 MOVLW 0x1
171 0154 6FED MOVWF 0xed, BANKED
172 0156 0EAC MOVLW 0xac
173 0158 6FEE MOVWF o, BANKED
174 015A 0E11 MOVLW 0x11
175 015C 6FEF MOVWF 0xef, BANKED
176 015E 0E05 MOVLW 0x5
177 0160 6E02 MOVWF 0x2, ACCESS
178 0162 6A03 CLRF 0x3, ACCESS
179 0164 C0EE MOVFF o, powerup
180 0166 F000 NOP
181 0168 C0EF MOVFF 0xef, used_btemp4
182 016A F001 NOP
183 016C EC58 CALL 0x2b0, 0
184 016E F001 NOP
185 0170 51EA MOVF m, W, BANKED
186 0172 2404 ADDWF intlevel0, W, ACCESS
187 0174 6FF0 MOVWF p, BANKED
188 0176 51EB MOVF 0xeb, W, BANKED
189 0178 2005 ADDWFC 0x5, W, ACCESS
190 017A 6FF1 MOVWF 0xf1, BANKED
191 017C C0EE MOVFF o, 0x2
192 017E F002 NOP
193 0180 C0EF MOVFF 0xef, 0x3
194 0182 F003 NOP
195 0184 C0EA MOVFF m, powerup
196 0186 F000 NOP
197 0188 C0EB MOVFF 0xeb, used_btemp4
198 018A F001 NOP
199 018C EC42 CALL 0x284, 0
200 018E F001 NOP
201 0190 C0F0 MOVFF p, 0x2
202 0192 F002 NOP
203 0194 C0F1 MOVFF 0xf1, 0x3
204 0196 F003 NOP
205 0198 EC58 CALL 0x2b0, 0
206 019A F001 NOP
207 019C 51E6 MOVF k, W, BANKED
208 019E 2604 ADDWF intlevel0, F, ACCESS
209 01A0 51E7 MOVF 0xe7, W, BANKED
210 01A2 2205 ADDWFC 0x5, F, ACCESS
211 01A4 51E4 MOVF j, W, BANKED
212 01A6 2404 ADDWF intlevel0, W, ACCESS
213 01A8 6FE8 MOVWF l, BANKED
214 01AA 51E5 MOVF 0xe5, W, BANKED
215 01AC 2005 ADDWFC 0x5, W, ACCESS
216 01AE 6FE9 MOVWF 0xe9, BANKED
217 01B0 C5F4 MOVFF 0x5f4, PRODL
218 01B2 FFF3 NOP
219 01B4 C5F5 MOVFF 0x5f5, PRODH
220 01B6 FFF4 NOP
221 01B8 C5F6 MOVFF 0x5f6, powerup
222 01BA F000 NOP
223 01BC C5F7 MOVFF 0x5f7, used_btemp4
224 01BE F001 NOP
225 01C0 C5F8 MOVFF 0x5f8, 0x2
226 01C2 F002 NOP
227 01C4 C5F9 MOVFF 0x5f9, 0x3
228 01C6 F003 NOP
229 01C8 C5FA MOVFF 0x5fa, intlevel0
230 01CA F004 NOP
231 01CC C5FB MOVFF 0x5fb, 0x5
232 01CE F005 NOP
233 01D0 C5FC MOVFF 0x5fc, 0x6
234 01D2 F006 NOP
235 01D4 C5FD MOVFF 0x5fd, 0x7
236 01D6 F007 NOP
237 01D8 C5FE MOVFF 0x5fe, WREG
238 01DA FFE8 NOP
239 01DC C008 MOVFF saved_bsrh, BSR
240 01DE FFE0 NOP
241 01E0 C5FF MOVFF 0x5ff, STATUS
242 01E2 FFD8 NOP
243 01E4 0010 RETFIE 0
244 01E6 FFFF NOP
245 01E8 D7A7 BRA 0x138
246 01EA FFFF NOP
247 01EC CFE8 MOVFF WREG, 0x5fe
248 01EE F5FE NOP
249 01F0 C007 MOVFF 0x7, 0x5fd
250 01F2 F5FD NOP
251 01F4 C006 MOVFF 0x6, 0x5fc
252 01F6 F5FC NOP
253 01F8 C005 MOVFF 0x5, 0x5fb
254 01FA F5FB NOP
255 01FC C004 MOVFF intlevel0, 0x5fa
256 01FE F5FA NOP
257 0200 C003 MOVFF 0x3, 0x5f9
258 0202 F5F9 NOP
259 0204 C002 MOVFF 0x2, 0x5f8
260 0206 F5F8 NOP
261 0208 C001 MOVFF used_btemp4, 0x5f7
262 020A F5F7 NOP
263 020C C000 MOVFF powerup, 0x5f6
264 020E F5F6 NOP
265 0210 CFF4 MOVFF PRODH, 0x5f5
266 0212 F5F5 NOP
267 0214 CFF3 MOVFF PRODL, 0x5f4
268 0216 F5F4 NOP
269 0218 D78D BRA hhandler
270 021A FFFF NOP
271 021C 6A06 CLRF 0x6, ACCESS
272 021E FFFF NOP
273 0220 6A04 CLRF intlevel0, ACCESS
274 0222 6A05 CLRF 0x5, ACCESS
275 0224 5002 MOVF 0x2, W, ACCESS
276 0226 1003 IORWF 0x3, W, ACCESS
277 0228 E103 BNZ 0x230
278 022A 6A00 CLRF powerup, ACCESS
279 022C 6A01 CLRF used_btemp4, ACCESS
280 022E 0C00 RETLW 0
281 0230 0E1F MOVLW 0x1f
282 0232 1206 IORWF 0x6, F, ACCESS
283 0234 90D8 BCF STATUS, 0, ACCESS
284 0236 2A06 INCF 0x6, F, ACCESS
285 0238 3602 RLCF 0x2, F, ACCESS
286 023A 3603 RLCF 0x3, F, ACCESS
287 023C E3FC BNC 0x236
288 023E 3203 RRCF 0x3, F, ACCESS
289 0240 3202 RRCF 0x2, F, ACCESS
290 0242 5002 MOVF 0x2, W, ACCESS
291 0244 5C00 SUBWF powerup, W, ACCESS
292 0246 5003 MOVF 0x3, W, ACCESS
293 0248 5801 SUBWFB used_btemp4, W, ACCESS
294 024A E304 BNC 0x254
295 024C 6E01 MOVWF used_btemp4, ACCESS
296 024E 5002 MOVF 0x2, W, ACCESS
297 0250 5E00 SUBWF powerup, F, ACCESS
298 0252 80D8 BSF STATUS, 0, ACCESS
299 0254 3604 RLCF intlevel0, F, ACCESS
300 0256 3605 RLCF 0x5, F, ACCESS
301 0258 2E06 DECFSZ 0x6, F, ACCESS
302 025A BA06 BTFSC 0x6, 0x5, ACCESS
303 025C D7F0 BRA 0x23e
304 025E AE06 BTFSS 0x6, 0x7, ACCESS
305 0260 D005 BRA 0x26c
306 0262 1E04 COMF intlevel0, F, ACCESS
307 0264 2A04 INCF intlevel0, F, ACCESS
308 0266 B4D8 BTFSC STATUS, 0x2, ACCESS
309 0268 0605 DECF 0x5, F, ACCESS
310 026A 1E05 COMF 0x5, F, ACCESS
311 026C 5004 MOVF intlevel0, W, ACCESS
312 026E 6E02 MOVWF 0x2, ACCESS
313 0270 5005 MOVF 0x5, W, ACCESS
314 0272 6E03 MOVWF 0x3, ACCESS
315 0274 AC06 BTFSS 0x6, 0x6, ACCESS
316 0276 0C00 RETLW 0
317 0278 1E00 COMF powerup, F, ACCESS
318 027A 2A00 INCF powerup, F, ACCESS
319 027C B4D8 BTFSC STATUS, 0x2, ACCESS
320 027E 0601 DECF used_btemp4, F, ACCESS
321 0280 1E01 COMF used_btemp4, F, ACCESS
322 0282 0C00 RETLW 0
323 0284 FFFF NOP
324 0286 6A06 CLRF 0x6, ACCESS
325 0288 AE01 BTFSS used_btemp4, 0x7, ACCESS
326 028A D006 BRA 0x298
327 028C 1E00 COMF powerup, F, ACCESS
328 028E 4A00 INFSNZ powerup, F, ACCESS
329 0290 0601 DECF used_btemp4, F, ACCESS
330 0292 1E01 COMF used_btemp4, F, ACCESS
331 0294 8C06 BSF 0x6, 0x6, ACCESS
332 0296 8E06 BSF 0x6, 0x7, ACCESS
333 0298 5003 MOVF 0x3, W, ACCESS
334 029A 0B80 ANDLW 0x80
335 029C 1A06 XORWF 0x6, F, ACCESS
336 029E AE03 BTFSS 0x3, 0x7, ACCESS
337 02A0 EF0F GOTO 0x21e
338 02A2 F001 NOP
339 02A4 1E02 COMF 0x2, F, ACCESS
340 02A6 4A02 INFSNZ 0x2, F, ACCESS
341 02A8 0603 DECF 0x3, F, ACCESS
342 02AA 1E03 COMF 0x3, F, ACCESS
343 02AC EF0F GOTO 0x21e
344 02AE F001 NOP
345 02B0 FFFF NOP
346 02B2 5002 MOVF 0x2, W, ACCESS
347 02B4 0200 MULWF powerup, ACCESS
348 02B6 CFF3 MOVFF PRODL, intlevel0
349 02B8 F004 NOP
350 02BA CFF4 MOVFF PRODH, 0x5
351 02BC F005 NOP
352 02BE 0201 MULWF used_btemp4, ACCESS
353 02C0 50F3 MOVF PRODL, W, ACCESS
354 02C2 2605 ADDWF 0x5, F, ACCESS
355 02C4 5003 MOVF 0x3, W, ACCESS
356 02C6 0200 MULWF powerup, ACCESS
357 02C8 50F3 MOVF PRODL, W, ACCESS
358 02CA 2605 ADDWF 0x5, F, ACCESS
359 02CC 0012 RETURN 0
360 02CE 6AEE CLRF POSTINC0, ACCESS
361 02D0 FFFF NOP
362 02D2 50EA MOVF FSR0H, W, ACCESS
363 02D4 62E2 CPFSEQ FSR1H, ACCESS
364 02D6 D7FB BRA 0x2ce
365 02D8 50E9 MOVF FSR0L, W, ACCESS
366 02DA 62E1 CPFSEQ FSR1L, ACCESS
367 02DC D7F8 BRA 0x2ce
368 02DE 0012 RETURN 0
369 02E0 FFFF NOP
370 02E2 FFFF NOP
371 02E4 FFFF NOP
372 02E6 FFFF NOP
373 02E8 FFFF NOP
--
sassi
More information about the Elektro
mailing list