📄 ggt_func.lst
字号:
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 + -