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

📄 ggt_func.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 5 页
字号:
 00000020  E5902000  LDR         R2,[R0,#0x0] ; pFirst
 00000024          L_1:
 00000024  E1A00002  MOV         R0,R2 ; pFirst
 00000028  E5900000  LDR         R0,[R0,#0x0] ; pFirst
 0000002C  E3500000  CMP         R0,#0x0000
 00000030  1AFFFFF9  BNE         L_3  ; Targ=0x1C
   74:     *(void **)pFirst = pNode;
 00000034  E1A01003  MOV         R1,R3 ; pNode
 00000038  E1A00002  MOV         R0,R2 ; pFirst
 0000003C  E5801000  STR         R1,[R0,#0x0] ; pFirst
   75: }
 00000040  E8BD0010  LDMIA       R13!,{R4}
 00000044  E12FFF1E  BX          R14
 00000048          ENDP ; 'ListAppend?A'


*** CODE SEGMENT '?PR?ListDelete?A?GGT_Func':
   93: void ListDelete(void *pFirst, void *pNode)
 00000000  E92D0010  STMDB       R13!,{R4}
 00000004  ---- Variable 'pNode' assigned to Register 'R1' ----
 00000004  ---- Variable 'pFirst' assigned to Register 'R0' ----
   95:     while(*(void **)pFirst)
 00000004  EA00000A  B           L_5  ; Targ=0x34
 00000008          L_7:
   97:         if(*(void **)pFirst == pNode)
 00000008  E1A02000  MOV         R2,R0 ; pFirst
 0000000C  E5922000  LDR         R2,[R2,#0x0] ; pFirst
 00000010  E1A03001  MOV         R3,R1 ; pNode
 00000014  E1520003  CMP         R2,R3 ; pNode
 00000018  1A000004  BNE         L_9  ; Targ=0x30
   99:             *(void **)pFirst = *(void **)pNode;
 0000001C  E1A03001  MOV         R3,R1 ; pNode
 00000020  E5934000  LDR         R4,[R3,#0x0] ; pNode
 00000024  E1A03000  MOV         R3,R0 ; pFirst
 00000028  E5834000  STR         R4,[R3,#0x0] ; pFirst
  100:             return;
 0000002C  EA000004  B           L_10  ; Targ=0x44
  101:         }
 00000030          L_9:
  102:         pFirst = (void **)(*(void **)pFirst);
 00000030  E1A00002  MOV         R0,R2 ; pFirst
  103:     }
 00000034          L_5:
 00000034  E1A02000  MOV         R2,R0 ; pFirst
 00000038  E5922000  LDR         R2,[R2,#0x0] ; pFirst
 0000003C  E3520000  CMP         R2,#0x0000
 00000040  1AFFFFF0  BNE         L_7  ; Targ=0x8
  104: }
 00000044          L_10:
 00000044  E8BD0010  LDMIA       R13!,{R4}
 00000048  E12FFF1E  BX          R14
 0000004C          ENDP ; 'ListDelete?A'


*** CODE SEGMENT '?PR?ListInsert?A?GGT_Func':
  123: void ListInsert(void *pFirst, void *pNode,
 00000000  E92D4070  STMDB       R13!,{R4-R6,LR}
 00000004  E1A06002  MOV         R6,R2 ; pIsHere
 00000008  ---- Variable 'pIsHere' assigned to Register 'R6' ----
 00000008  E1A05001  MOV         R5,R1 ; pNode
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 12  

 0000000C  ---- Variable 'pNode' assigned to Register 'R5' ----
 0000000C  E1A04000  MOV         R4,R0 ; pFirst
 00000010  ---- Variable 'pFirst' assigned to Register 'R4' ----
  126:     while(*(void **)pFirst)
 00000010  EA000011  B           L_11  ; Targ=0x5C
 00000014          L_13:
  128:         if(NULL == (*pIsHere)(*(void **)pFirst, pNode))
 00000014  E1A00004  MOV         R0,R4 ; pFirst
 00000018  E5900000  LDR         R0,[R0,#0x0] ; pFirst
 0000001C  E1A01005  MOV         R1,R5 ; pNode
 00000020  E1A02006  MOV         R2,R6 ; pIsHere
 00000024  E1A0E00F  MOV         R14,R15
 00000028  E12FFF12  BX          R2
 0000002C  E3500000  CMP         R0,#0x0000
 00000030  1A000007  BNE         L_15  ; Targ=0x54
  130:             *(void **)pNode = *(void **)pFirst;
 00000034  E1A00004  MOV         R0,R4 ; pFirst
 00000038  E5902000  LDR         R2,[R0,#0x0] ; pFirst
 0000003C  E1A00005  MOV         R0,R5 ; pNode
 00000040  E5802000  STR         R2,[R0,#0x0] ; pNode
  131:             *(void **)pFirst = pNode;
 00000044  E1A01005  MOV         R1,R5 ; pNode
 00000048  E1A00004  MOV         R0,R4 ; pFirst
 0000004C  E5801000  STR         R1,[R0,#0x0] ; pFirst
  132:             return;
 00000050  EA00000B  B           L_16  ; Targ=0x84
  133:         }
 00000054          L_15:
  134:         pFirst = (void **)(*(void **)pFirst);
 00000054  E1A00004  MOV         R0,R4 ; pFirst
 00000058  E5904000  LDR         R4,[R0,#0x0] ; pFirst
  135:     }
 0000005C          L_11:
 0000005C  E1A00004  MOV         R0,R4 ; pFirst
 00000060  E5900000  LDR         R0,[R0,#0x0] ; pFirst
 00000064  E3500000  CMP         R0,#0x0000
 00000068  1AFFFFE9  BNE         L_13  ; Targ=0x14
  136:     *(void **)pNode = 0;
 0000006C  E3A02000  MOV         R2,#0x0
 00000070  E1A00005  MOV         R0,R5 ; pNode
 00000074  E5802000  STR         R2,[R0,#0x0] ; pNode
  137:     *(void **)pFirst = pNode;
 00000078  E1A01005  MOV         R1,R5 ; pNode
 0000007C  E1A00004  MOV         R0,R4 ; pFirst
 00000080  E5801000  STR         R1,[R0,#0x0] ; pFirst
  138: }
 00000084          L_16:
 00000084  E8BD0070  LDMIA       R13!,{R4-R6}
 00000088  E8BD0008  LDMIA       R13!,{R3}
 0000008C  E12FFF13  BX          R3
 00000090          ENDP ; 'ListInsert?A'


*** CODE SEGMENT '?PR?BoxInit?A?GGT_Func':
  157: void BoxInit(void *pBoxHead, INT32 BoxSize, INT32 BlockSize) 
 00000000  E92D0030  STMDB       R13!,{R4-R5}
 00000004  ---- Variable 'BlockSize' assigned to Register 'R2' ----
 00000004  E1A05001  MOV         R5,R1 ; BoxSize
 00000008  ---- Variable 'BoxSize' assigned to Register 'R5' ----
 00000008  E1A04000  MOV         R4,R0 ; pBoxHead
 0000000C  ---- Variable 'pBoxHead' assigned to Register 'R4' ----
  158: {
 0000000C            ; SCOPE-START
  161:     if((sizeof(UINT32) > BlockSize) || ((BlockSize + sizeof(_BoxHead) > BoxSize)))
 0000000C  E1A00002  MOV         R0,R2 ; BlockSize
 00000010  E3500004  CMP         R0,#0x0004 ; BlockSize
 00000014  BA00001C  BLT         L_19  ; Targ=0x8C
 00000018  E1A00002  MOV         R0,R2 ; BlockSize
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 13  

 0000001C  E2800004  ADD         R0,R0,#0x0004 ; BlockSize
 00000020  E1A01005  MOV         R1,R5 ; BoxSize
 00000024  E1500001  CMP         R0,R1 ; BoxSize
 00000028  CA000017  BGT         L_19  ; Targ=0x8C
  164:     pBlock = ((UINT8 *)pBoxHead) + sizeof(_BoxHead);
 0000002C  E1A03004  MOV         R3,R4 ; pBoxHead
 00000030  E2833004  ADD         R3,R3,#0x0004 ; pBoxHead
 00000034  ---- Variable 'pBlock' assigned to Register 'R3' ----
  165:     ((_pBoxHead)pBoxHead)->pFree = pBlock;
 00000034  E1A01003  MOV         R1,R3 ; pBlock
 00000038  E1A00004  MOV         R0,R4 ; pBoxHead
 0000003C  E5801000  STR         R1,[R0,#0x0] ; pBoxHead
  166:     pEnd = ((UINT8 *)pBoxHead) + BoxSize;
 00000040  E1A01005  MOV         R1,R5 ; BoxSize
 00000044  E1A00004  MOV         R0,R4 ; pBoxHead
 00000048  E0800001  ADD         R0,R0,R1 ; pBoxHead
 0000004C  ---- Variable 'pEnd' assigned to Register 'R0' ----
  168:     pEnd = ((UINT8 *)pEnd) - BlockSize;
 0000004C  E1A01002  MOV         R1,R2 ; BlockSize
 00000050  E0400001  SUB         R0,R0,R1 ; pEnd
  169:     while(1)  
 00000054          L_22:
  171:         pNext = ((UINT8 *)pBlock) + BlockSize;
 00000054  E1A04002  MOV         R4,R2 ; BlockSize
 00000058  E1A01003  MOV         R1,R3 ; pBlock
 0000005C  E0811004  ADD         R1,R1,R4 ; pBlock
 00000060  ---- Variable 'pNext' assigned to Register 'R1' ----
  172:         if(pNext > pEnd)  
 00000060  E1A05000  MOV         R5,R0 ; pEnd
 00000064  E1A04001  MOV         R4,R1 ; pNext
 00000068  E1540005  CMP         R4,R5 ; pNext
 0000006C  8A000003  BHI         L_21  ; Targ=0x80
  174:         *((void **)pBlock) = pNext;
 00000070  E1A04001  MOV         R4,R1 ; pNext
 00000074  E5834000  STR         R4,[R3,#0x0] ; pBlock
  175:         pBlock = pNext;
 00000078  E1A03001  MOV         R3,R1 ; pNext
  176:     }
 0000007C  EAFFFFF4  B           L_22  ; Targ=0x54
 00000080          L_21:
  178:     *((void **)pBlock) = 0;
 00000080  E3A01000  MOV         R1,#0x0
 00000084  E1A00003  MOV         R0,R3 ; pBlock
 00000088  E5801000  STR         R1,[R0,#0x0] ; pBlock
 0000008C            ; SCOPE-END
  179: }
 0000008C          L_19:
 0000008C  E8BD0030  LDMIA       R13!,{R4-R5}
 00000090  E12FFF1E  BX          R14
 00000094          ENDP ; 'BoxInit?A'


*** CODE SEGMENT '?PR?BoxAlloc?A?GGT_Func':
  196: void *BoxAlloc(void *pBoxHead)
 00000000  E1A03000  MOV         R3,R0 ; pBoxHead
 00000004  ---- Variable 'pBoxHead' assigned to Register 'R3' ----
  197: {
 00000004            ; SCOPE-START
  200:     pFree = ((_pBoxHead)pBoxHead)->pFree;
 00000004  E1A00003  MOV         R0,R3 ; pBoxHead
 00000008  E5901000  LDR         R1,[R0,#0x0] ; pBoxHead
 0000000C  ---- Variable 'pFree' assigned to Register 'R1' ----
  201:     if(pFree) 
 0000000C  E1A00001  MOV         R0,R1 ; pFree
 00000010  E3500000  CMP         R0,#0x0000 ; pFree
 00000014  0A000003  BEQ         L_25  ; Targ=0x28
  202:         ((_pBoxHead)pBoxHead)->pFree = *pFree;
 00000018  E1A00001  MOV         R0,R1 ; pFree
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 14  

 0000001C  E5902000  LDR         R2,[R0,#0x0] ; pFree
 00000020  E1A00003  MOV         R0,R3 ; pBoxHead
 00000024  E5802000  STR         R2,[R0,#0x0] ; pBoxHead
 00000028          L_25:
  204:     return(pFree);
 00000028  E1A00001  MOV         R0,R1 ; pFree
 0000002C            ; SCOPE-END
  205: }
 0000002C  E12FFF1E  BX          R14
 00000030          ENDP ; 'BoxAlloc?A'


*** CODE SEGMENT '?PR?BoxFree?A?GGT_Func':
  223: void BoxFree(void *pBoxHead, void *pBox)
 00000000  E92D0010  STMDB       R13!,{R4}
 00000004  E1A03001  MOV         R3,R1 ; pBox
 00000008  ---- Variable 'pBox' assigned to Register 'R3' ----
 00000008  E1A02000  MOV         R2,R0 ; pBoxHead
 0000000C  ---- Variable 'pBoxHead' assigned to Register 'R2' ----
  225:     *((void **)pBox) = ((_pBoxHead)pBoxHead)->pFree;
 0000000C  E1A00002  MOV         R0,R2 ; pBoxHead
 00000010  E5904000  LDR         R4,[R0,#0x0] ; pBoxHead
 00000014  E1A00003  MOV         R0,R3 ; pBox
 00000018  E5804000  STR         R4,[R0,#0x0] ; pBox
  226:     ((_pBoxHead)pBoxHead)->pFree = pBox;
 0000001C  E1A01003  MOV         R1,R3 ; pBox
 00000020  E1A00002  MOV         R0,R2 ; pBoxHead
 00000024  E5801000  STR         R1,[R0,#0x0] ; pBoxHead
  227: }
 00000028  E8BD0010  LDMIA       R13!,{R4}
 0000002C  E12FFF1E  BX          R14
 00000030          ENDP ; 'BoxFree?A'


*** CODE SEGMENT '?PR?ClearBuf?A?GGT_Func':
  229: void ClearBuf(UINT8 *pBuf, INT32 Len)
 00000000  ---- Variable 'Len' assigned to Register 'R1' ----
 00000000  ---- Variable 'pBuf' assigned to Register 'R0' ----
  231:     while(Len--)
 00000000  EA000003  B           L_27  ; Targ=0x14
 00000004          L_29:
 00000004  E3A03000  MOV         R3,#0x0
 00000008  E1A02000  MOV         R2,R0 ; pBuf
 0000000C  E2820001  ADD         R0,R2,#0x0001 ; pBuf
 00000010  E5C23000  STRB        R3,[R2,#0x0] ; pBuf
 00000014          L_27:
 00000014  E1A02001  MOV         R2,R1 ; Len
 00000018  E2421001  SUB         R1,R2,#0x0001 ; Len
 0000001C  E3520000  CMP         R2,#0x0000 ; Len
 00000020  1AFFFFF7  BNE         L_29  ; Targ=0x4
  233: }
 00000024  E12FFF1E  BX          R14
 00000028          ENDP ; 'ClearBuf?A'


*** CODE SEGMENT '?PR?FullBuf?A?GGT_Func':
  235: void FullBuf(UINT8 *pBuf, INT32 Len, UINT8 Data)
 00000000  E92D0010  STMDB       R13!,{R4}
 00000004  ---- Variable 'Data' assigned to Register 'R2' ----
 00000004  ---- Variable 'Len' assigned to Register 'R1' ----
 00000004  ---- Variable 'pBuf' assigned to Register 'R0' ----
  237:     while(Len--)
 00000004  EA000003  B           L_31  ; Targ=0x18
 00000008          L_33:
 00000008  E1A04002  MOV         R4,R2 ; Data
 0000000C  E1A03000  MOV         R3,R0 ; pBuf
 00000010  E2830001  ADD         R0,R3,#0x0001 ; pBuf
 00000014  E5C34000  STRB        R4,[R3,#0x0] ; pBuf
 00000018          L_31:
 00000018  E1A03001  MOV         R3,R1 ; Len
 0000001C  E2431001  SUB         R1,R3,#0x0001 ; Len
 00000020  E3530000  CMP         R3,#0x0000 ; Len
ARM COMPILER V2.32a,  GGT_Func                                                             28/02/08  23:05:55  PAGE 15  

 00000024  1AFFFFF7  BNE         L_33  ; Targ=0x8
  239: }
 00000028  E8BD0010  LDMIA       R13!,{R4}
 0000002C  E12FFF1E  BX          R14
 00000030          ENDP ; 'FullBuf?A'


*** CODE SEGMENT '?PR?StrToDWord?A?GGT_Func':
  241: UINT32 StrToDWord(UINT8 *pStr)
 00000000  ---- Variable 'pStr' assigned to Register 'R0' ----
  242: {
 00000000            ; SCOPE-START
  245:     R = 0;
 00000000  E3A01000  MOV         R1,#0x0
 00000004  ---- Variable 'R' assigned to Register 'R1' ----
  246:     while(*pStr)
 00000004  EA000006  B           L_35  ; Targ=0x24
 00000008          L_37:
  248:         R = R * 10 + (*pStr - '0');
 00000008  E1A02000  MOV         R2,R0 ; pStr
 0000000C  E5D22000  LDRB        R2,[R2,#0x0] ; pStr
 00000010  E2422030  SUB         R2,R2,#0x0030
 00000014  E3A0300A  MOV         R3,#0xA
 00000018  E0010193  MUL         R1,R3,R1
 0000001C  E0811002  ADD         R1,R1,R2
  249:         pStr++;
 00000020  E2800001  ADD         R0,R0,#0x0001 ; pStr
  250:     }
 00000024          L_35:
 00000024  E1A02000  MOV         R2,R0 ; pStr
 00000028  E5D22000  LDRB        R2,[R2,#0x0] ; pStr
 0000002C  E3520000  CMP         R2,#0x0000
 00000030  1AFFFFF4  BNE         L_37  ; Targ=0x8
  251:     return(R);
 00000034  E1A00001  MOV         R0,R1 ; R
 00000038            ; SCOPE-END
  252: }
 00000038  E12FFF1E  BX          R14
 0000003C          ENDP ; 'StrToDWord?A'


⌨️ 快捷键说明

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