⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ggt_mut.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000014  E1A00004  MOV         R0,R4 ; pMut
 00000018  E5801000  STR         R1,[R0,#0x0] ; pMut
   55:     pMut->pTask = NULL;
 0000001C  E3A01000  MOV         R1,#0x0
 00000020  E1A00004  MOV         R0,R4 ; pMut
 00000024  E580100C  STR         R1,[R0,#0xC]
   56:     pMut->Count = 0;
 00000028  E3A01000  MOV         R1,#0x0
 0000002C  E1A00004  MOV         R0,R4 ; pMut
 00000030  E5801008  STR         R1,[R0,#0x8]
   57:     pMut->Owner = 0;
 00000034  E3A01000  MOV         R1,#0x0
 00000038  E1A00004  MOV         R0,R4 ; pMut
 0000003C  E5801004  STR         R1,[R0,#0x4]
   59:     OSIRQUnlock();
 00000040  E3A00003  MOV         R0,#0x3
 00000044  EF000000  SWI         0x0 ; SWI_Handler?A
   60: }
 00000048  E8BD0010  LDMIA       R13!,{R4}
 0000004C  E8BD0008  LDMIA       R13!,{R3}
 00000050  E12FFF13  BX          R3
 00000054          ENDP ; 'OSMutInit?A'


*** CODE SEGMENT '?PR?OSMutRelease?A?GGT_Mut':
   77: void OSMutRelease(_pMut pMut)
 00000000  E92D4030  STMDB       R13!,{R4-R5,LR}
 00000004  E1A05000  MOV         R5,R0 ; pMut
 00000008  ---- Variable 'pMut' assigned to Register 'R5' ----
 00000008  ---- Variable 'pTask' assigned to Register 'R4' ----
   78: {
 00000008            ; SCOPE-START
   81:     OSIRQLock();
 00000008  E3A00002  MOV         R0,#0x2
 0000000C  EF000000  SWI         0x0 ; SWI_Handler?A
   83:     pMut->Count--;
 00000010  E1A00005  MOV         R0,R5 ; pMut
 00000014  E2800008  ADD         R0,R0,#0x0008 ; pMut
 00000018  E5901000  LDR         R1,[R0,#0x0]
 0000001C  E2411001  SUB         R1,R1,#0x0001
 00000020  E5801000  STR         R1,[R0,#0x0]
   85:     if(0 >= pMut->Count)
ARM COMPILER V2.32a,  GGT_Mut                                                              28/02/08  23:05:55  PAGE 5   

 00000024  E1A00005  MOV         R0,R5 ; pMut
 00000028  E5900008  LDR         R0,[R0,#0x8]
 0000002C  E3500000  CMP         R0,#0x0000
 00000030  CA00001B  BGT         L_1  ; Targ=0xA4
   87:         if(pMut->pTask)
 00000034  E1A00005  MOV         R0,R5 ; pMut
 00000038  E590000C  LDR         R0,[R0,#0xC]
 0000003C  E3500000  CMP         R0,#0x0000
 00000040  0A000014  BEQ         L_2  ; Targ=0x98
   89:             pMut->IsBusy = TRUE;
 00000044  E3A01001  MOV         R1,#0x1
 00000048  E1A00005  MOV         R0,R5 ; pMut
 0000004C  E5801000  STR         R1,[R0,#0x0] ; pMut
   90:             pMut->Owner = pTask->ID;
 00000050  E1A00004  MOV         R0,R4 ; pTask
 00000054  E590100C  LDR         R1,[R0,#0xC]
 00000058  E1A00005  MOV         R0,R5 ; pMut
 0000005C  E5801004  STR         R1,[R0,#0x4]
   91:             pMut->Count = 0;
 00000060  E3A01000  MOV         R1,#0x0
 00000064  E1A00005  MOV         R0,R5 ; pMut
 00000068  E5801008  STR         R1,[R0,#0x8]
   92:             pTask = pMut->pTask;
 0000006C  E1A00005  MOV         R0,R5 ; pMut
 00000070  E590000C  LDR         R0,[R0,#0xC]
 00000074  E1A04000  MOV         R4,R0 ; pTask
   93:             ((_pOSTask)(pMut->pTask)) = ((_pOSTask)(pMut->pTask))->pNext;
 00000078  E5901000  LDR         R1,[R0,#0x0]
 0000007C  E1A00005  MOV         R0,R5 ; pMut
 00000080  E580100C  STR         R1,[R0,#0xC]
   94:             OSTaskPushReady(pTask);
 00000084  E1A00004  MOV         R0,R4 ; pTask
 00000088  EBFFFFDC  BL          OSTaskPushReady?A  ; Targ=0x0
   95:             OSTaskSW();
 0000008C  E3A00000  MOV         R0,#0x0
 00000090  EF000000  SWI         0x0 ; SWI_Handler?A
   96:         }else
 00000094  EA000002  B           L_1  ; Targ=0xA4
 00000098          L_2:
   97:             pMut->IsBusy = FALSE;
 00000098  E3A01000  MOV         R1,#0x0
 0000009C  E1A00005  MOV         R0,R5 ; pMut
 000000A0  E5801000  STR         R1,[R0,#0x0] ; pMut
   98:     }
 000000A4          L_1:
  100:     OSIRQUnlock();
 000000A4  E3A00003  MOV         R0,#0x3
 000000A8  EF000000  SWI         0x0 ; SWI_Handler?A
 000000AC            ; SCOPE-END
  101: }
 000000AC  E8BD0030  LDMIA       R13!,{R4-R5}
 000000B0  E8BD0008  LDMIA       R13!,{R3}
 000000B4  E12FFF13  BX          R3
 000000B8          ENDP ; 'OSMutRelease?A'


*** CODE SEGMENT '?PR?OSMutWait?A?GGT_Mut':
  118: void OSMutWait(_pMut pMut)
 00000000  E92D4010  STMDB       R13!,{R4,LR}
 00000004  E1A04000  MOV         R4,R0 ; pMut
 00000008  ---- Variable 'pMut' assigned to Register 'R4' ----
  120:     OSIRQLock();
 00000008  E3A00002  MOV         R0,#0x2
 0000000C  EF000000  SWI         0x0 ; SWI_Handler?A
  122:     if(pMut->IsBusy)
 00000010  E1A00004  MOV         R0,R4 ; pMut
 00000014  E5900000  LDR         R0,[R0,#0x0] ; pMut
 00000018  E3500000  CMP         R0,#0x0000
ARM COMPILER V2.32a,  GGT_Mut                                                              28/02/08  23:05:55  PAGE 6   

 0000001C  0A000018  BEQ         L_4  ; Targ=0x84
  124:         if(pMut->Owner != pOSTskNow->ID)            
 00000020  E5100000  LDR         R0,=pOSTskNow ; pOSTskNow
 00000024  E5901000  LDR         R1,[R0,#0x0] ; pOSTskNow
 00000028  E591200C  LDR         R2,[R1,#0xC]
 0000002C  E1A00004  MOV         R0,R4 ; pMut
 00000030  E5900004  LDR         R0,[R0,#0x4]
 00000034  E1500002  CMP         R0,R2
 00000038  0A00000B  BEQ         L_5  ; Targ=0x6C
  126:             pOSTskNow->State = OS_STATE_TSK_WAIT_MUT;
 0000003C  E3A00008  MOV         R0,#0x8
 00000040  E5810014  STR         R0,[R1,#0x14]
  128:             ListInsert(&(pMut->pTask), pOSTskNow, OSTaskOrderByPrio);
 00000044  E1A00004  MOV         R0,R4 ; pMut
 00000048  E280000C  ADD         R0,R0,#0x000C ; pMut
 0000004C  E5101000  LDR         R1,=pOSTskNow ; pOSTskNow
 00000050  E5911000  LDR         R1,[R1,#0x0] ; pOSTskNow
 00000054  E5102000  LDR         R2,=OSTaskOrderByPrio?A ; OSTaskOrderByPrio?A
 00000058  EBFFFFE8  BL          ListInsert?A  ; Targ=0x0
  129:             OSTaskIsNULLLoadDef();
 0000005C  EBFFFFE7  BL          OSTaskIsNULLLoadDef?A  ; Targ=0x0
  130:             OSTaskSW();
 00000060  E3A00000  MOV         R0,#0x0
 00000064  EF000000  SWI         0x0 ; SWI_Handler?A
  131:         }else
 00000068  EA000010  B           L_7  ; Targ=0xB0
 0000006C          L_5:
  132:             pMut->Count++;
 0000006C  E1A00004  MOV         R0,R4 ; pMut
 00000070  E2800008  ADD         R0,R0,#0x0008 ; pMut
 00000074  E5901000  LDR         R1,[R0,#0x0]
 00000078  E2811001  ADD         R1,R1,#0x0001
 0000007C  E5801000  STR         R1,[R0,#0x0]
  133:     }else
 00000080  EA00000A  B           L_7  ; Targ=0xB0
 00000084          L_4:
  135:         pMut->Count = 0;
 00000084  E3A01000  MOV         R1,#0x0
 00000088  E1A00004  MOV         R0,R4 ; pMut
 0000008C  E5801008  STR         R1,[R0,#0x8]
  136:         pMut->Owner = pOSTskNow->ID;
 00000090  E5100000  LDR         R0,=pOSTskNow ; pOSTskNow
 00000094  E5900000  LDR         R0,[R0,#0x0] ; pOSTskNow
 00000098  E590100C  LDR         R1,[R0,#0xC]
 0000009C  E1A00004  MOV         R0,R4 ; pMut
 000000A0  E5801004  STR         R1,[R0,#0x4]
  137:         pMut->IsBusy = TRUE;
 000000A4  E3A01001  MOV         R1,#0x1
 000000A8  E1A00004  MOV         R0,R4 ; pMut
 000000AC  E5801000  STR         R1,[R0,#0x0] ; pMut
  138:     }
 000000B0          L_7:
  140:     OSIRQUnlock();
 000000B0  E3A00003  MOV         R0,#0x3
 000000B4  EF000000  SWI         0x0 ; SWI_Handler?A
  141: }
 000000B8  E8BD0010  LDMIA       R13!,{R4}
 000000BC  E8BD0008  LDMIA       R13!,{R3}
 000000C0  E12FFF13  BX          R3
 000000C4          ENDP ; 'OSMutWait?A'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =    ------
ARM COMPILER V2.32a,  GGT_Mut                                                              28/02/08  23:05:55  PAGE 7   

End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -