📄 ggt_kernel.lst
字号:
00000000 E92D4030 STMDB R13!,{R4-R5,LR}
00000004 E1A04000 MOV R4,R0 ; TaskID
00000008 ---- Variable 'TaskID' assigned to Register 'R4' ----
316: {
00000008 ; SCOPE-START
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 18
319: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
321: pTask = &(pOSTask[TaskID - 1]);
00000010 E1A00004 MOV R0,R4 ; TaskID
00000014 E2400001 SUB R0,R0,#0x0001 ; TaskID
00000018 E1A00280 MOV R0,R0,LSL #5
0000001C E5101000 LDR R1,=pOSTask ; pOSTask
00000020 E5915000 LDR R5,[R1,#0x0] ; pOSTask
00000024 E0855000 ADD R5,R5,R0
00000028 ---- Variable 'pTask' assigned to Register 'R5' ----
322: pTask->State |= OS_STATE_TSK_SUSPEND;
00000028 E1A00005 MOV R0,R5 ; pTask
0000002C E5900014 LDR R0,[R0,#0x14]
00000030 E3800101 ORR R0,R0,#0x40000000
00000034 E1A01005 MOV R1,R5 ; pTask
00000038 E5810014 STR R0,[R1,#0x14]
323: ListDelete((void *)(&pOSTskReady), (void *)pTask);
0000003C E5100000 LDR R0,=pOSTskReady ; pOSTskReady
00000040 E1A01005 MOV R1,R5 ; pTask
00000044 EBFFFFED BL ListDelete?A ; Targ=0x0
324: ListDelete((void *)(&pOSTskDelay), (void *)pTask);
00000048 E5100000 LDR R0,=pOSTskDelay ; pOSTskDelay
0000004C E1A01005 MOV R1,R5 ; pTask
00000050 EBFFFFEA BL ListDelete?A ; Targ=0x0
326: if(pOSTskNow->ID == TaskID)
00000054 E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000058 E5900000 LDR R0,[R0,#0x0] ; pOSTskNow
0000005C E590100C LDR R1,[R0,#0xC]
00000060 E1A00004 MOV R0,R4 ; TaskID
00000064 E1510000 CMP R1,R0 ; TaskID
00000068 1A000002 BNE L_19 ; Targ=0x78
328: OSTaskIsNULLLoadDef();
0000006C EBFFFFE3 BL OSTaskIsNULLLoadDef?A ; Targ=0x0
329: OSTaskSW();
00000070 E3A00000 MOV R0,#0x0
00000074 EF000000 SWI 0x0 ; SWI_Handler?A
330: }
00000078 L_19:
332: OSIRQUnlock();
00000078 E3A00003 MOV R0,#0x3
0000007C EF000000 SWI 0x0 ; SWI_Handler?A
00000080 ; SCOPE-END
333: }
00000080 E8BD0030 LDMIA R13!,{R4-R5}
00000084 E8BD0008 LDMIA R13!,{R3}
00000088 E12FFF13 BX R3
0000008C ENDP ; 'Suspend?A'
*** CODE SEGMENT '?PR?OSTaskPushDelay?A?GGT_Kernel':
350: void OSTaskPushDelay(_pOSTask pTask)
00000000 E92D4000 STMDB R13!,{LR}
00000004 E1A02000 MOV R2,R0 ; pTask
00000008 ---- Variable 'pTask' assigned to Register 'R2' ----
352: pTask->State = OS_STATE_TSK_DELAY;
00000008 E3A01002 MOV R1,#0x2
0000000C E1A00002 MOV R0,R2 ; pTask
00000010 E5801014 STR R1,[R0,#0x14]
353: pTask->StateValue = pTask->PrioTick;
00000014 E1A00002 MOV R0,R2 ; pTask
00000018 E5901010 LDR R1,[R0,#0x10]
0000001C E1A00002 MOV R0,R2 ; pTask
00000020 E5801018 STR R1,[R0,#0x18]
354: ListAppend((void *)(&pOSTskDelay), (void *)pTask);
00000024 E5100000 LDR R0,=pOSTskDelay ; pOSTskDelay
00000028 E1A01002 MOV R1,R2 ; pTask
0000002C EBFFFFF3 BL ListAppend?A ; Targ=0x0
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 19
355: }
00000030 E8BD0008 LDMIA R13!,{R3}
00000034 E12FFF13 BX R3
00000038 ENDP ; 'OSTaskPushDelay?A'
*** CODE SEGMENT '?PR?OSTaskPushReady?A?GGT_Kernel':
372: void OSTaskPushReady(_pOSTask pTask)
00000000 E92D4000 STMDB R13!,{LR}
00000004 E1A02000 MOV R2,R0 ; pTask
00000008 ---- Variable 'pTask' assigned to Register 'R2' ----
374: pTask->State = OS_STATE_TSK_READY;
00000008 E3A01001 MOV R1,#0x1
0000000C E1A00002 MOV R0,R2 ; pTask
00000010 E5801014 STR R1,[R0,#0x14]
375: ListAppend((void *)(&pOSTskReady), (void *)pTask);
00000014 E5100000 LDR R0,=pOSTskReady ; pOSTskReady
00000018 E1A01002 MOV R1,R2 ; pTask
0000001C EBFFFFF7 BL ListAppend?A ; Targ=0x0
376: }
00000020 E8BD0008 LDMIA R13!,{R3}
00000024 E12FFF13 BX R3
00000028 ENDP ; 'OSTaskPushReady?A'
*** CODE SEGMENT '?PR?OSTaskDelay?A?GGT_Kernel':
393: void OSTaskDelay(UINT32 Time)
00000000 E92D4010 STMDB R13!,{R4,LR}
00000004 E1A04000 MOV R4,R0 ; Time
00000008 ---- Variable 'Time' assigned to Register 'R4' ----
395: OSIRQLock();
00000008 E3A00002 MOV R0,#0x2
0000000C EF000000 SWI 0x0 ; SWI_Handler?A
397: OSTaskPushDelay(pOSTskNow);
00000010 E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000014 E5900000 LDR R0,[R0,#0x0] ; pOSTskNow
00000018 EBFFFFF8 BL OSTaskPushDelay?A ; Targ=0x0
398: pOSTskNow->StateValue = (Time * OSGetTick()) / 1000;
0000001C EBFFFFF7 BL OSGetTick?A ; Targ=0x0
00000020 E1A01004 MOV R1,R4 ; Time
00000024 E0000091 MUL R0,R1,R0 ; Time
00000028 E3A01FFA MOV R1,#0x3E8
0000002C EBFFFFF3 BL ?C?UDIV?A ; Targ=0x0 ; ?C?UDIV?A
00000030 E1A00001 MOV R0,R1
00000034 E5101000 LDR R1,=pOSTskNow ; pOSTskNow
00000038 E5911000 LDR R1,[R1,#0x0] ; pOSTskNow
0000003C E5810018 STR R0,[R1,#0x18]
399: OSTaskIsNULLLoadDef();
00000040 EBFFFFEE BL OSTaskIsNULLLoadDef?A ; Targ=0x0
400: OSTaskSW();
00000044 E3A00000 MOV R0,#0x0
00000048 EF000000 SWI 0x0 ; SWI_Handler?A
402: OSIRQUnlock();
0000004C E3A00003 MOV R0,#0x3
00000050 EF000000 SWI 0x0 ; SWI_Handler?A
403: }
00000054 E8BD0010 LDMIA R13!,{R4}
00000058 E8BD0008 LDMIA R13!,{R3}
0000005C E12FFF13 BX R3
00000060 ENDP ; 'OSTaskDelay?A'
*** CODE SEGMENT '?PR?OSTaskDispatch?A?GGT_Kernel':
420: void OSTaskDispatch(void)
00000000 E92D4030 STMDB R13!,{R4-R5,LR}
421: {
00000004 ; SCOPE-START
424: pTask = pOSTskDelay;
00000004 E5100000 LDR R0,=pOSTskDelay ; pOSTskDelay
00000008 E5904000 LDR R4,[R0,#0x0] ; pOSTskDelay
0000000C ---- Variable 'pTask' assigned to Register 'R4' ----
425: while(pTask)
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 20
0000000C EA000013 B L_20 ; Targ=0x60
00000010 L_22:
427: pTask->StateValue--;
00000010 E1A00004 MOV R0,R4 ; pTask
00000014 E2800018 ADD R0,R0,#0x0018 ; pTask
00000018 E5901000 LDR R1,[R0,#0x0]
0000001C E2411001 SUB R1,R1,#0x0001
00000020 E5801000 STR R1,[R0,#0x0]
428: if(pTask->StateValue <= 0)
00000024 E1A00004 MOV R0,R4 ; pTask
00000028 E5900018 LDR R0,[R0,#0x18]
0000002C E3500000 CMP R0,#0x0000
00000030 CA000008 BGT L_24 ; Targ=0x58
430: p = pTask;
00000034 E1A05004 MOV R5,R4 ; pTask
00000038 ---- Variable 'p' assigned to Register 'R5' ----
431: pTask = pTask->pNext;
00000038 E1A00004 MOV R0,R4 ; pTask
0000003C E5904000 LDR R4,[R0,#0x0] ; pTask
432: ListDelete((void *)(&pOSTskDelay), (void *)p);
00000040 E5100000 LDR R0,=pOSTskDelay ; pOSTskDelay
00000044 E1A01005 MOV R1,R5 ; p
00000048 EBFFFFEC BL ListDelete?A ; Targ=0x0
433: OSTaskPushReady(p);
0000004C E1A00005 MOV R0,R5 ; p
00000050 EBFFFFEA BL OSTaskPushReady?A ; Targ=0x0
434: }else
00000054 EA000001 B L_20 ; Targ=0x60
00000058 L_24:
435: pTask = pTask->pNext;
00000058 E1A00004 MOV R0,R4 ; pTask
0000005C E5904000 LDR R4,[R0,#0x0] ; pTask
436: }
00000060 L_20:
00000060 E1A00004 MOV R0,R4 ; pTask
00000064 E3500000 CMP R0,#0x0000 ; pTask
00000068 1AFFFFE8 BNE L_22 ; Targ=0x10
439: if(pOSTskReady)
0000006C E5100000 LDR R0,=pOSTskReady ; pOSTskReady
00000070 E5900000 LDR R0,[R0,#0x0] ; pOSTskReady
00000074 E3500000 CMP R0,#0x0000
00000078 0A000003 BEQ L_26 ; Targ=0x8C
440: OSTaskPushDelay(pOSTskNow);
0000007C E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000080 E5900000 LDR R0,[R0,#0x0] ; pOSTskNow
00000084 EBFFFFDD BL OSTaskPushDelay?A ; Targ=0x0
00000088 EA000002 B L_27 ; Targ=0x98
0000008C L_26:
442: OSTaskPushReady(pOSTskNow);
0000008C E5100000 LDR R0,=pOSTskNow ; pOSTskNow
00000090 E5900000 LDR R0,[R0,#0x0] ; pOSTskNow
00000094 EBFFFFD9 BL OSTaskPushReady?A ; Targ=0x0
00000098 L_27:
00000098 ; SCOPE-END
443: }
00000098 E8BD0030 LDMIA R13!,{R4-R5}
0000009C E8BD0008 LDMIA R13!,{R3}
000000A0 E12FFF13 BX R3
000000A4 ENDP ; 'OSTaskDispatch?A'
*** CODE SEGMENT '?PR?OSTaskIsNULLLoadDef?A?GGT_Kernel':
460: void OSTaskIsNULLLoadDef(void)
00000000 E92D4000 STMDB R13!,{LR}
462: if(!pOSTskReady)
00000004 E5100000 LDR R0,=pOSTskReady ; pOSTskReady
00000008 E5900000 LDR R0,[R0,#0x0] ; pOSTskReady
0000000C E3500000 CMP R0,#0x0000
ARM COMPILER V2.32a, GGT_Kernel 28/02/08 23:05:55 PAGE 21
00000010 1A000006 BNE L_28 ; Targ=0x30
464: ListDelete((void *)(&pOSTskDelay), (void *)pOSTskMain);
00000014 E5100000 LDR R0,=pOSTskDelay ; pOSTskDelay
00000018 E5101000 LDR R1,=pOSTskMain ; pOSTskMain
0000001C E5911000 LDR R1,[R1,#0x0] ; pOSTskMain
00000020 EBFFFFF6 BL ListDelete?A ; Targ=0x0
465: OSTaskPushReady(pOSTskMain);
00000024 E5100000 LDR R0,=pOSTskMain ; pOSTskMain
00000028 E5900000 LDR R0,[R0,#0x0] ; pOSTskMain
0000002C EBFFFFF3 BL OSTaskPushReady?A ; Targ=0x0
466: }
00000030 L_28:
467: }
00000030 E8BD0008 LDMIA R13!,{R3}
00000034 E12FFF13 BX R3
00000038 ENDP ; 'OSTaskIsNULLLoadDef?A'
*** CODE SEGMENT '?PR?OSTaskInit?A?GGT_Kernel':
484: void OSTaskInit(void)
00000000 E92D4010 STMDB R13!,{R4,LR}
485: {
00000004 ; SCOPE-START
488: pOSBoxMsg = (UINT32 *)OSGetBoxMsg();
00000004 EBFFFFFD BL OSGetBoxMsg?A ; Targ=0x0
00000008 E5101000 LDR R1,=pOSBoxMsg ; pOSBoxMsg
0000000C E5810000 STR R0,[R1,#0x0] ; pOSBoxMsg
489: BoxInit(pOSBoxMsg, sizeof(_BoxHead) + OSGetSumMsg() * sizeof(_OSMsg), sizeof(_OSMsg));
00000010 EBFFFFFA BL OSGetSumMsg?A ; Targ=0x0
00000014 E1A01200 MOV R1,R0,LSL #4 ; OSGetSumMsg?A
00000018 E2811004 ADD R1,R1,#0x0004
0000001C E5100000 LDR R0,=pOSBoxMsg ; pOSBoxMsg
00000020 E5900000 LDR R0,[R0,#0x0] ; pOSBoxMsg
00000024 E3A02010 MOV R2,#0x10
00000028 EBFFFFF4 BL BoxInit?A ; Targ=0x0
491: pOSTask = &(((_pOSBoxTask)OSGetBoxTask())->Task[0]);
0000002C EBFFFFF3 BL OSGetBoxTask?A ; Targ=0x0
00000030 E2801004 ADD R1,R0,#0x0004 ; OSGetBoxTask?A
00000034 E5100000 LDR R0,=pOSTask ; pOSTask
00000038 E5801000 STR R1,[R0,#0x0] ; pOSTask
493: for(i = 0; i < OSGetSumTask(); i++)
0000003C E3A04000 MOV R4,#0x0
00000040 ---- Variable 'i' assigned to Register 'R4' ----
00000040 EA000008 B L_31 ; Targ=0x68
00000044 L_32:
494: pOSTask[i].ID = i + 1;
00000044 E1A00004 MOV R0,R4 ; i
00000048 E2800001 ADD R0,R0,#0x0001 ; i
0000004C E1A02004 MOV R2,R4 ; i
00000050 E1A02282 MOV R2,R2,LSL #5 ; i
00000054 E5101000 LDR R1,=pOSTask ; pOSTask
00000058 E5911000 LDR R1,[R1,#0x0] ; pOSTask
0000005C E0811002 ADD R1,R1,R2
00000060 E581000C STR R0,[R1,#0xC]
00000064 E2844001 ADD R4,R4,#0x0001 ; i
00000068 L_31:
00000068 EBFFFFE4 BL OSGetSumTask?A ; Targ=0x0
0000006C E1A01004 MOV R1,R4 ; i
00000070 E1510000 CMP R1,R0 ; i
00000074 BAFFFFF2 BLT L_32 ; Targ=0x44
496: BoxInit(OSGe
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -