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

📄 ggt_msg.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 2 页
字号:
 0000000C  E5810000  STR         R0,[R1,#0x0] ; pOSBoxMsg
   57:     BoxInit(pOSBoxMsg, sizeof(_BoxHead) + OSGetSumMsg() * sizeof(_OSMsg), sizeof(_OSMsg));
 00000010  EBFFFFFA  BL          OSGetSumMsg?A  ; Targ=0x0
 00000014  E3A01014  MOV         R1,#0x14
 00000018  E0010190  MUL         R1,R0,R1 ; OSGetSumMsg?A
 0000001C  E2811004  ADD         R1,R1,#0x0004
 00000020  E5100000  LDR         R0,=pOSBoxMsg ; pOSBoxMsg
 00000024  E5900000  LDR         R0,[R0,#0x0] ; pOSBoxMsg
 00000028  E3A02014  MOV         R2,#0x14
 0000002C  EBFFFFF3  BL          BoxInit?A  ; Targ=0x0
   58: }
 00000030  E8BD0008  LDMIA       R13!,{R3}
 00000034  E12FFF13  BX          R3
 00000038          ENDP ; 'OSMsgInit?A'


*** CODE SEGMENT '?PR?OSMsgPost?A?GGT_Msg':
   78: BOOL OSMsgPost(const UINT32 TaskID, const UINT32 Msg, const UINT32 wParam, const UINT32 lParam)
 00000000  E92D40F0  STMDB       R13!,{R4-R7,LR}
 00000004  E1A05003  MOV         R5,R3 ; lParam
 00000008  ---- Variable 'lParam' assigned to Register 'R5' ----
 00000008  E1A06002  MOV         R6,R2 ; wParam
 0000000C  ---- Variable 'wParam' assigned to Register 'R6' ----
 0000000C  E1A07001  MOV         R7,R1 ; Msg
 00000010  ---- Variable 'Msg' assigned to Register 'R7' ----
 00000010  E1A04000  MOV         R4,R0 ; TaskID
 00000014  ---- Variable 'TaskID' assigned to Register 'R4' ----
 00000014  E24DD004  SUB         R13,R13,#0x0004
   79: {
 00000018            ; SCOPE-START
   84:     OSIRQLock();
 00000018  E3A00001  MOV         R0,#0x1
 0000001C  EF000000  SWI         0x0 ; SWI_Handler?A
   86:     pMsg = (_pOSMsg)BoxAlloc(pOSBoxMsg);
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 6   

 00000020  E5100000  LDR         R0,=pOSBoxMsg ; pOSBoxMsg
 00000024  E5900000  LDR         R0,[R0,#0x0] ; pOSBoxMsg
 00000028  EBFFFFF4  BL          BoxAlloc?A  ; Targ=0x0
 0000002C  E1A01000  MOV         R1,R0 ; pMsg
 00000030  ---- Variable 'pMsg' assigned to Register 'R1' ----
   87:     R = pMsg != NULL;
 00000030  E1A00001  MOV         R0,R1 ; pMsg
 00000034  E3500000  CMP         R0,#0x0000 ; pMsg
 00000038  0A000001  BEQ         L_1  ; Targ=0x44
 0000003C  E3A00001  MOV         R0,#0x1
 00000040  EA000000  B           L_2  ; Targ=0x48
 00000044          L_1:
 00000044  E3A00000  MOV         R0,#0x0
 00000048          L_2:
 00000048  E58D0000  STR         R0,[R13,#0x0] ; R
   88:     if(R)
 0000004C  E59D0000  LDR         R0,[R13,#0x0] ; R
 00000050  E3500000  CMP         R0,#0x0000
 00000054  0A000012  BEQ         L_3  ; Targ=0xA4
   90:         pMsg->Sender = pOSTskNow->ID;
 00000058  E5100000  LDR         R0,=pOSTskNow ; pOSTskNow
 0000005C  E5900000  LDR         R0,[R0,#0x0] ; pOSTskNow
 00000060  E590000C  LDR         R0,[R0,#0xC]
 00000064  E5810004  STR         R0,[R1,#0x4]
   91:         pMsg->Msg = Msg;
 00000068  E5817008  STR         R7,[R1,#0x8] ; Msg
   92:         pMsg->wParam = wParam;
 0000006C  E581600C  STR         R6,[R1,#0xC] ; wParam
   93:         pMsg->lParam = lParam;
 00000070  E5815010  STR         R5,[R1,#0x10] ; lParam
   95:         pTask = &pOSTask[TaskID - 1];
 00000074  E2440001  SUB         R0,R4,#0x0001 ; TaskID
 00000078  E1A00280  MOV         R0,R0,LSL #5 ; TaskID
 0000007C  E5102000  LDR         R2,=pOSTask ; pOSTask
 00000080  E5924000  LDR         R4,[R2,#0x0] ; pOSTask
 00000084  E0844000  ADD         R4,R4,R0
 00000088  ---- Variable 'pTask' assigned to Register 'R4' ----
   96:         ListAppend((void *)(&(pTask->pMsg)), pMsg);
 00000088  E284001C  ADD         R0,R4,#0x001C ; pTask
 0000008C  EBFFFFDB  BL          ListAppend?A  ; Targ=0x0
   99:         if(OS_TSK_STATE_WAIT_MSG == pTask->State)
 00000090  E5940014  LDR         R0,[R4,#0x14]
 00000094  E3500004  CMP         R0,#0x0004
 00000098  1A000001  BNE         L_3  ; Targ=0xA4
  100:             OSTaskPushReady(pTask);
 0000009C  E1A00004  MOV         R0,R4
 000000A0  EBFFFFD6  BL          OSTaskPushReady?A  ; Targ=0x0
  101:     }
 000000A4          L_3:
  103:     OSIRQUnlock();
 000000A4  E3A00002  MOV         R0,#0x2
 000000A8  EF000000  SWI         0x0 ; SWI_Handler?A
  104:     return(R);
 000000AC  E59D0000  LDR         R0,[R13,#0x0] ; R
 000000B0            ; SCOPE-END
  105: }
 000000B0  E28DD004  ADD         R13,R13,#0x0004
 000000B4  E8BD00F0  LDMIA       R13!,{R4-R7}
 000000B8  E8BD0008  LDMIA       R13!,{R3}
 000000BC  E12FFF13  BX          R3
 000000C0          ENDP ; 'OSMsgPost?A'


*** CODE SEGMENT '?PR?OSMsgPeek?A?GGT_Msg':
  122: BOOL OSMsgPeek(_pMsg pMsg)
 00000000  E92D4070  STMDB       R13!,{R4-R6,LR}
 00000004  E1A06000  MOV         R6,R0 ; pMsg
 00000008  ---- Variable 'pMsg' assigned to Register 'R6' ----
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 7   

  123: {
 00000008            ; SCOPE-START
  127:     OSIRQLock();
 00000008  E3A00001  MOV         R0,#0x1
 0000000C  EF000000  SWI         0x0 ; SWI_Handler?A
  129:     R = (NULL != pOSTskNow->pMsg);
 00000010  E5100000  LDR         R0,=pOSTskNow ; pOSTskNow
 00000014  E5901000  LDR         R1,[R0,#0x0] ; pOSTskNow
 00000018  E591501C  LDR         R5,[R1,#0x1C]
 0000001C  E1A00005  MOV         R0,R5
 00000020  E3500000  CMP         R0,#0x0000
 00000024  0A000001  BEQ         L_6  ; Targ=0x30
 00000028  E3A04001  MOV         R4,#0x1
 0000002C  EA000000  B           L_7  ; Targ=0x34
 00000030          L_6:
 00000030  E3A04000  MOV         R4,#0x0
 00000034          L_7:
 00000034  ---- Variable 'R' assigned to Register 'R4' ----
  130:     if(R)
 00000034  E1A00004  MOV         R0,R4 ; R
 00000038  E3500000  CMP         R0,#0x0000 ; R
 0000003C  0A000010  BEQ         L_8  ; Targ=0x84
  132:         pOSMsg = pOSTskNow->pMsg;
 00000040  ---- Variable 'pOSMsg' assigned to Register 'R5' ----
  133:         *pMsg = *((_pMsg)(&(pOSMsg->Sender)));
 00000040  E1A01005  MOV         R1,R5 ; pOSMsg
 00000044  E2811004  ADD         R1,R1,#0x0004 ; pOSMsg
 00000048  E1A00006  MOV         R0,R6 ; pMsg
 0000004C  E3A02004  MOV         R2,#0x4
 00000050          L_21:
 00000050  E8B10008  LDMIA       R1!,{R3}
 00000054  E8A00008  STMIA       R0!,{R3}
 00000058  E2522001  SUBS        R2,R2,#0x0001
 0000005C  1AFFFFFB  BNE         L_21  ; Targ=0x50
  134:         pOSTskNow->pMsg = (pOSTskNow->pMsg)->pNext;
 00000060  E5100000  LDR         R0,=pOSTskNow ; pOSTskNow
 00000064  E5901000  LDR         R1,[R0,#0x0] ; pOSTskNow
 00000068  E591001C  LDR         R0,[R1,#0x1C]
 0000006C  E5900000  LDR         R0,[R0,#0x0]
 00000070  E581001C  STR         R0,[R1,#0x1C]
  135:         BoxFree(pOSBoxMsg, pOSMsg);
 00000074  E5100000  LDR         R0,=pOSBoxMsg ; pOSBoxMsg
 00000078  E5900000  LDR         R0,[R0,#0x0] ; pOSBoxMsg
 0000007C  E1A01005  MOV         R1,R5 ; pOSMsg
 00000080  EBFFFFDE  BL          BoxFree?A  ; Targ=0x0
  136:     }
 00000084          L_8:
  138:     OSIRQUnlock();
 00000084  E3A00002  MOV         R0,#0x2
 00000088  EF000000  SWI         0x0 ; SWI_Handler?A
  140:     return(R);
 0000008C  E1A00004  MOV         R0,R4 ; R
 00000090            ; SCOPE-END
  141: }
 00000090  E8BD0070  LDMIA       R13!,{R4-R6}
 00000094  E8BD0008  LDMIA       R13!,{R3}
 00000098  E12FFF13  BX          R3
 0000009C          ENDP ; 'OSMsgPeek?A'


*** CODE SEGMENT '?PR?OSMsgWait?A?GGT_Msg':
  158: BOOL OSMsgWait(_pMsg pMsg)
 00000000  E92D4030  STMDB       R13!,{R4-R5,LR}
 00000004  E1A05000  MOV         R5,R0 ; pMsg
 00000008  ---- Variable 'pMsg' assigned to Register 'R5' ----
  160: DoWait:
 00000008          DoWait:
  161:     if(OSMsgPeek(pMsg))
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 8   

 00000008  E1A00005  MOV         R0,R5 ; pMsg
 0000000C  EBFFFFFB  BL          OSMsgPeek?A  ; Targ=0x0
 00000010  E3500000  CMP         R0,#0x0000 ; OSMsgPeek?A
 00000014  0A000002  BEQ         L_11  ; Targ=0x24
  163:         return(TRUE);
 00000018  E3A04001  MOV         R4,#0x1
 0000001C  E1A00004  MOV         R0,R4
 00000020  EA000007  B           L_12  ; Targ=0x44
  164:     }else
 00000024          L_11:
  166:         pOSTskNow->State = OS_TSK_STATE_WAIT_MSG;
 00000024  E3A00004  MOV         R0,#0x4
 00000028  E5101000  LDR         R1,=pOSTskNow ; pOSTskNow
 0000002C  E5911000  LDR         R1,[R1,#0x0] ; pOSTskNow
 00000030  E5810014  STR         R0,[R1,#0x14]
  167:         OSTaskIsNULLLoadDef();
 00000034  EBFFFFF1  BL          OSTaskIsNULLLoadDef?A  ; Targ=0x0
  168:         OSTaskSW();
 00000038  E3A00000  MOV         R0,#0x0
 0000003C  EF000000  SWI         0x0 ; SWI_Handler?A
  169:         goto DoWait;
 00000040  EAFFFFED  B           DoWait  ; Targ=0xFFFFFFFC
  171: }
 00000044          L_12:
 00000044  E8BD0030  LDMIA       R13!,{R4-R5}
 00000048  E8BD0008  LDMIA       R13!,{R3}
 0000004C  E12FFF13  BX          R3
 00000050          ENDP ; 'OSMsgWait?A'


*** CODE SEGMENT '?PR?OSMsgWaitFor?A?GGT_Msg':
  188: BOOL OSMsgWaitFor(const UINT32 Msg, _pMsg pMsg)
 00000000  E92D4070  STMDB       R13!,{R4-R6,LR}
 00000004  E1A06001  MOV         R6,R1 ; pMsg
 00000008  ---- Variable 'pMsg' assigned to Register 'R6' ----
 00000008  E1A05000  MOV         R5,R0 ; Msg
 0000000C  ---- Variable 'Msg' assigned to Register 'R5' ----
  190: DoWait:
 0000000C          DoWait:
  191:     if(OSMsgPeek(pMsg))
 0000000C  E1A00006  MOV         R0,R6 ; pMsg
 00000010  EBFFFFFA  BL          OSMsgPeek?A  ; Targ=0x0
 00000014  E3500000  CMP         R0,#0x0000 ; OSMsgPeek?A
 00000018  0A000007  BEQ         L_15  ; Targ=0x3C
  193:         if(Msg == pMsg->Msg)            
 0000001C  E1A00006  MOV         R0,R6 ; pMsg
 00000020  E5901004  LDR         R1,[R0,#0x4]
 00000024  E1A00005  MOV         R0,R5 ; Msg
 00000028  E1500001  CMP         R0,R1 ; Msg
 0000002C  1AFFFFF2  BNE         DoWait  ; Targ=0xFFFFFFFC
  194:             return(TRUE);
 00000030  E3A04001  MOV         R4,#0x1
 00000034  E1A00004  MOV         R0,R4
 00000038  EA000007  B           L_17  ; Targ=0x5C
  197:     }else
 0000003C          L_15:
  199:         pOSTskNow->State = OS_TSK_STATE_WAIT_MSG;
 0000003C  E3A00004  MOV         R0,#0x4
 00000040  E5101000  LDR         R1,=pOSTskNow ; pOSTskNow
 00000044  E5911000  LDR         R1,[R1,#0x0] ; pOSTskNow
 00000048  E5810014  STR         R0,[R1,#0x14]
  200:         OSTaskIsNULLLoadDef();
 0000004C  EBFFFFEB  BL          OSTaskIsNULLLoadDef?A  ; Targ=0x0
  201:         OSTaskSW();
 00000050  E3A00000  MOV         R0,#0x0
 00000054  EF000000  SWI         0x0 ; SWI_Handler?A
  202:         goto DoWait;
 00000058  EAFFFFE7  B           DoWait  ; Targ=0xFFFFFFFC
ARM COMPILER V2.32a,  GGT_Msg                                                              07/01/08  21:34:46  PAGE 9   

  204: }
 0000005C          L_17:
 0000005C  E8BD0070  LDMIA       R13!,{R4-R6}
 00000060  E8BD0008  LDMIA       R13!,{R3}
 00000064  E12FFF13  BX          R3
 00000068          ENDP ; 'OSMsgWaitFor?A'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         4
  const size           =    ------
End of Module Information.


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

⌨️ 快捷键说明

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