📄 test.lss
字号:
240: 30 93 67 00 sts 0x0067, r19
244: 20 93 66 00 sts 0x0066, r18
248: 08 95 ret
0000024a <__vector_2>:
24a: 1f 92 push r1
24c: 0f 92 push r0
24e: 0f 93 push r16
250: 0f b7 in r16, 0x3f ; 63
252: 0f 93 push r16
254: 11 24 eor r1, r1
256: 2f 93 push r18
258: 3f 93 push r19
25a: 4f 93 push r20
25c: 5f 93 push r21
25e: 6f 93 push r22
260: 7f 93 push r23
262: 8f 93 push r24
264: 9f 93 push r25
266: af 93 push r26
268: bf 93 push r27
26a: ef 93 push r30
26c: ff 93 push r31
26e: cf 93 push r28
270: df 93 push r29
272: dd 20 and r13, r13
274: f9 f4 brne .+62 ; 0x2b4 <__vector_2+0x6a>
276: 11 fd sbrc r17, 1
278: 17 c0 rjmp .+46 ; 0x2a8 <__vector_2+0x5e>
27a: 8d b7 in r24, 0x3d ; 61
27c: 9e b7 in r25, 0x3e ; 62
27e: ea 2d mov r30, r10
280: ff 27 eor r31, r31
282: ee 0f add r30, r30
284: ff 1f adc r31, r31
286: eb 0d add r30, r11
288: f1 1d adc r31, r1
28a: 9f 01 movw r18, r30
28c: 22 0f add r18, r18
28e: 33 1f adc r19, r19
290: 22 0f add r18, r18
292: 33 1f adc r19, r19
294: 22 0f add r18, r18
296: 33 1f adc r19, r19
298: ee 0f add r30, r30
29a: ff 1f adc r31, r31
29c: e2 0f add r30, r18
29e: f3 1f adc r31, r19
2a0: e0 58 subi r30, 0x80 ; 128
2a2: ff 4f sbci r31, 0xFF ; 255
2a4: 91 83 std Z+1, r25 ; 0x01
2a6: 80 83 st Z, r24
2a8: ed b7 in r30, 0x3d ; 61
2aa: fe b7 in r31, 0x3e ; 62
2ac: ed be out 0x3d, r14 ; 61
2ae: fe be out 0x3e, r15 ; 62
2b0: ef 93 push r30
2b2: ff 93 push r31
2b4: 2d 2d mov r18, r13
2b6: 2f 5f subi r18, 0xFF ; 255
2b8: d2 2e mov r13, r18
2ba: 80 91 64 00 lds r24, 0x0064
2be: 90 91 65 00 lds r25, 0x0065
2c2: 01 96 adiw r24, 0x01 ; 1
2c4: 90 93 65 00 sts 0x0065, r25
2c8: 80 93 64 00 sts 0x0064, r24
2cc: f8 94 cli
2ce: 21 11 cpse r18, r1
2d0: da 94 dec r13
2d2: dd 20 and r13, r13
2d4: 41 f4 brne .+16 ; 0x2e6 <__vector_2+0x9c>
2d6: ff 91 pop r31
2d8: ef 91 pop r30
2da: ed bf out 0x3d, r30 ; 61
2dc: fe bf out 0x3e, r31 ; 62
2de: 10 ff sbrs r17, 0
2e0: 02 c0 rjmp .+4 ; 0x2e6 <__vector_2+0x9c>
2e2: 11 ff sbrs r17, 1
2e4: 56 d1 rcall .+684 ; 0x592 <SososSched>
2e6: df 91 pop r29
2e8: cf 91 pop r28
2ea: ff 91 pop r31
2ec: ef 91 pop r30
2ee: bf 91 pop r27
2f0: af 91 pop r26
2f2: 9f 91 pop r25
2f4: 8f 91 pop r24
2f6: 7f 91 pop r23
2f8: 6f 91 pop r22
2fa: 5f 91 pop r21
2fc: 4f 91 pop r20
2fe: 3f 91 pop r19
300: 2f 91 pop r18
302: 0f 91 pop r16
304: 0f bf out 0x3f, r16 ; 63
306: 0f 91 pop r16
308: 0f 90 pop r0
30a: 1f 90 pop r1
30c: 18 95 reti
0000030e <__vector_1>:
30e: 1f 92 push r1
310: 0f 92 push r0
312: 0f 93 push r16
314: 0f b7 in r16, 0x3f ; 63
316: 0f 93 push r16
318: 11 24 eor r1, r1
31a: 2f 93 push r18
31c: 3f 93 push r19
31e: 4f 93 push r20
320: 5f 93 push r21
322: 6f 93 push r22
324: 7f 93 push r23
326: 8f 93 push r24
328: 9f 93 push r25
32a: af 93 push r26
32c: bf 93 push r27
32e: ef 93 push r30
330: ff 93 push r31
332: cf 93 push r28
334: df 93 push r29
336: dd 20 and r13, r13
338: f9 f4 brne .+62 ; 0x378 <__vector_1+0x6a>
33a: 11 fd sbrc r17, 1
33c: 17 c0 rjmp .+46 ; 0x36c <__vector_1+0x5e>
33e: 8d b7 in r24, 0x3d ; 61
340: 9e b7 in r25, 0x3e ; 62
342: ea 2d mov r30, r10
344: ff 27 eor r31, r31
346: ee 0f add r30, r30
348: ff 1f adc r31, r31
34a: eb 0d add r30, r11
34c: f1 1d adc r31, r1
34e: 9f 01 movw r18, r30
350: 22 0f add r18, r18
352: 33 1f adc r19, r19
354: 22 0f add r18, r18
356: 33 1f adc r19, r19
358: 22 0f add r18, r18
35a: 33 1f adc r19, r19
35c: ee 0f add r30, r30
35e: ff 1f adc r31, r31
360: e2 0f add r30, r18
362: f3 1f adc r31, r19
364: e0 58 subi r30, 0x80 ; 128
366: ff 4f sbci r31, 0xFF ; 255
368: 91 83 std Z+1, r25 ; 0x01
36a: 80 83 st Z, r24
36c: ed b7 in r30, 0x3d ; 61
36e: fe b7 in r31, 0x3e ; 62
370: ed be out 0x3d, r14 ; 61
372: fe be out 0x3e, r15 ; 62
374: ef 93 push r30
376: ff 93 push r31
378: d3 94 inc r13
37a: 78 94 sei
37c: 93 9a sbi 0x12, 3 ; 18
37e: 93 98 cbi 0x12, 3 ; 18
380: 80 91 62 00 lds r24, 0x0062
384: 90 91 63 00 lds r25, 0x0063
388: 01 96 adiw r24, 0x01 ; 1
38a: 90 93 63 00 sts 0x0063, r25
38e: 80 93 62 00 sts 0x0062, r24
392: 8f e7 ldi r24, 0x7F ; 127
394: 90 e0 ldi r25, 0x00 ; 0
396: 6e d4 rcall .+2268 ; 0xc74 <SososLogicSemPost>
398: f8 94 cli
39a: d1 10 cpse r13, r1
39c: da 94 dec r13
39e: dd 20 and r13, r13
3a0: 41 f4 brne .+16 ; 0x3b2 <__vector_1+0xa4>
3a2: ff 91 pop r31
3a4: ef 91 pop r30
3a6: ed bf out 0x3d, r30 ; 61
3a8: fe bf out 0x3e, r31 ; 62
3aa: 10 ff sbrs r17, 0
3ac: 02 c0 rjmp .+4 ; 0x3b2 <__vector_1+0xa4>
3ae: 11 ff sbrs r17, 1
3b0: f0 d0 rcall .+480 ; 0x592 <SososSched>
3b2: df 91 pop r29
3b4: cf 91 pop r28
3b6: ff 91 pop r31
3b8: ef 91 pop r30
3ba: bf 91 pop r27
3bc: af 91 pop r26
3be: 9f 91 pop r25
3c0: 8f 91 pop r24
3c2: 7f 91 pop r23
3c4: 6f 91 pop r22
3c6: 5f 91 pop r21
3c8: 4f 91 pop r20
3ca: 3f 91 pop r19
3cc: 2f 91 pop r18
3ce: 0f 91 pop r16
3d0: 0f bf out 0x3f, r16 ; 63
3d2: 0f 91 pop r16
3d4: 0f 90 pop r0
3d6: 1f 90 pop r1
3d8: 18 95 reti
000003da <SososInitIntSp>:
void SososInitIntSp(void) __attribute__ ((constructor));//定义中断嵌套堆栈指针
void SososInitIntSp(void)
//本函数在main()之前运行,将系统堆栈指针保存在r15:r14中
{
__asm__ __volatile__("PUSH r16 \n\t");
3da: 0f 93 push r16
__asm__ __volatile__("IN r14 ,__SP_L__ \n\t");
3dc: ed b6 in r14, 0x3d ; 61
__asm__ __volatile__("LDI r16 ,3 \n\t");
3de: 03 e0 ldi r16, 0x03 ; 3
__asm__ __volatile__("ADD r14 ,r16 \n\t");
3e0: e0 0e add r14, r16
__asm__ __volatile__("IN r15 ,__SP_H__ \n\t");
3e2: fe b6 in r15, 0x3e ; 62
__asm__ __volatile__("CLR r16 \n\t");
3e4: 00 27 eor r16, r16
__asm__ __volatile__("ADC r15 ,r16 \n\t");
3e6: f0 1e adc r15, r16
__asm__ __volatile__("POP r16 \n\t");
3e8: 0f 91 pop r16
3ea: 08 95 ret
000003ec <SOSOS_TASK_STACK_CASE>:
}
#endif
#if STACK_SIZE_REPORT_ENABLE == 1
unsigned int SOSOS_TASK_STACK_CASE(unsigned char pri,unsigned char id)//堆栈情况报告
//本函数用于返回指定任务的堆栈占用情况,单位:字节
//pri和id是要报告的任务优先级和ID
{
unsigned int i;
for(i=(TCB[pri*SOSOS_MAX_TASK_PER_PRI+id].TASK_STACK_BUTTON-TCB[pri*SOSOS_MAX_TASK_PER_PRI+id].TASK_STACK_SIZE+1);i<TCB[pri*SOSOS_MAX_TASK_PER_PRI+id].TASK_STACK_BUTTON;i++){
3ec: e8 2f mov r30, r24
3ee: ff 27 eor r31, r31
3f0: ee 0f add r30, r30
3f2: ff 1f adc r31, r31
3f4: e6 0f add r30, r22
3f6: f1 1d adc r31, r1
3f8: cf 01 movw r24, r30
3fa: 33 e0 ldi r19, 0x03 ; 3
3fc: 88 0f add r24, r24
3fe: 99 1f adc r25, r25
400: 3a 95 dec r19
402: e1 f7 brne .-8 ; 0x3fc <SOSOS_TASK_STACK_CASE+0x10>
404: ee 0f add r30, r30
406: ff 1f adc r31, r31
408: e8 0f add r30, r24
40a: f9 1f adc r31, r25
40c: e0 58 subi r30, 0x80 ; 128
40e: ff 4f sbci r31, 0xFF ; 255
410: 22 81 ldd r18, Z+2 ; 0x02
412: 33 81 ldd r19, Z+3 ; 0x03
414: 84 81 ldd r24, Z+4 ; 0x04
416: 95 81 ldd r25, Z+5 ; 0x05
418: f9 01 movw r30, r18
41a: e8 1b sub r30, r24
41c: f9 0b sbc r31, r25
41e: 03 c0 rjmp .+6 ; 0x426 <SOSOS_TASK_STACK_CASE+0x3a>
if(*((unsigned char *)i)!=INIT_STACK_FILL_BYTES)
420: 80 81 ld r24, Z
422: 8a 3a cpi r24, 0xAA ; 170
424: 21 f4 brne .+8 ; 0x42e <SOSOS_TASK_STACK_CASE+0x42>
426: 31 96 adiw r30, 0x01 ; 1
428: e2 17 cp r30, r18
42a: f3 07 cpc r31, r19
42c: c8 f3 brcs .-14 ; 0x420 <SOSOS_TASK_STACK_CASE+0x34>
42e: 2e 1b sub r18, r30
430: 3f 0b sbc r19, r31
break;
}
i=TCB[pri*SOSOS_MAX_TASK_PER_PRI+id].TASK_STACK_BUTTON-1-i;
return i;
}
432: c9 01 movw r24, r18
434: 01 97 sbiw r24, 0x01 ; 1
436: 08 95 ret
00000438 <SososInitOs>:
#endif
#if SOSOS_TASK_ENALBE == 1
void SososInitOs(void)//初始化SOSOS系统
//本函数用于初始化SOSOS系统,应在调用任何系统函数前调用一次
{
#if ERROR_DETECT_ENABLE == 1
unsigned char i;
SOSOS_WAIT_TASK=0;
438: 99 24 eor r9, r9
SOSOS_TIMESLICE=0;
43a: 88 24 eor r8, r8
SOSOS_INT_NEST=0;
43c: dd 24 eor r13, r13
SOSOS_TICKS=0;
43e: 77 24 eor r7, r7
SOSOS_STATE=0;
440: 10 e0 ldi r17, 0x00 ; 0
#if SOSOS_MUTEX_ENABLE == 1
SOSOS_MUTEX_POINT=0;
442: 10 92 c2 00 sts 0x00C2, r1
446: 10 92 c1 00 sts 0x00C1, r1
#endif
for(i=0;i<SOSOS_PRI_MAX;i++){
SOSOS_TASK_READY[i]=0;
44a: 10 92 7a 00 sts 0x007A, r1
44e: 10 92 7b 00 sts 0x007B, r1
452: 10 92 7c 00 sts 0x007C, r1
}
for(i=0;i<SOSOS_PRI_MAX*SOSOS_MAX_TASK_PER_PRI;i++){
TCB[i].TASK_STACK_POINT=0;
456: 10 92 81 00 sts 0x0081, r1
45a: 10 92 80 00 sts 0x0080, r1
45e: 10 92 8b 00 sts 0x008B, r1
462: 10 92 8a 00 sts 0x008A, r1
466: 10 92 95 00 sts 0x0095, r1
46a: 10 92 94 00 sts 0x0094, r1
46e: 10 92 9f 00 sts 0x009F, r1
472: 10 92 9e 00 sts 0x009E, r1
476: 10 92 a9 00 sts 0x00A9, r1
47a: 10 92 a8 00 sts 0x00A8, r1
47e: 10 92 b3 00 sts 0x00B3, r1
482: 10 92 b2 00 sts 0x00B2, r1
486: e3 ec ldi r30, 0xC3 ; 195
488: f0 e0 ldi r31, 0x00 ; 0
48a: 8a ea ldi r24, 0xAA ; 170
}
#endif
#if STACK_SIZE_REPORT_ENABLE == 1
unsigned int fill;
for(fill=0;fill<SOSOS_TASK_STACK_SIZE;fill++)
SOSOS_TASK_STACK[fill]=INIT_STACK_FILL_BYTES;
48c: 81 93 st Z+, r24
48e: 91 e0 ldi r25, 0x01 ; 1
490: eb 38 cpi r30, 0x8B ; 139
492: f9 07 cpc r31, r25
494: d9 f7 brne .-10 ; 0x48c <__stack+0x2d>
#endif
SOSOS_TASK_STACK_TOP=(SOSOS_ADDRESS)SOSOS_TASK_STACK+SOSOS_TASK_STACK_SIZE-1;
496: 31 97 sbiw r30, 0x01 ; 1
498: f0 93 7e 00 sts 0x007E, r31
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -