📄 gui_array_insertitem.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\gui_array_insertitem.o --depend=.\Obj\gui_array_insertitem.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\Widget\GUI_ARRAY_InsertItem.c]
THUMB
AREA ||i.GUI_ARRAY_InsertBlankItem||, CODE, READONLY, ALIGN=1
GUI_ARRAY_InsertBlankItem PROC
;;;51 */
;;;52 char GUI_ARRAY_InsertBlankItem(GUI_ARRAY* pThis, unsigned int Index) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4604 MOV r4,r0
;;;53 GUI_ARRAY_CHECK(pThis); /* Sanity checks at higher debug levels only */
;;;54
;;;55 if (Index >= (unsigned)pThis->NumItems) {
000006 8800 LDRH r0,[r0,#0]
000008 460d MOV r5,r1 ;52
00000a 4288 CMP r0,r1
00000c d929 BLS |L1.98|
;;;56 GUI_DEBUG_ERROROUT("GUI_ARRAY_InsertBlankItem: Illegal index");
;;;57 } else {
;;;58 WM_HMEM hNewBuffer;
;;;59 hNewBuffer = GUI_ALLOC_AllocZero(sizeof(WM_HMEM) * (pThis->NumItems + 1));
00000e 0040 LSLS r0,r0,#1
000010 1c80 ADDS r0,r0,#2
000012 b200 SXTH r0,r0
000014 f7fffffe BL GUI_ALLOC_AllocZero
000018 0006 MOVS r6,r0
;;;60 if (hNewBuffer == 0) {
00001a d022 BEQ |L1.98|
;;;61 GUI_DEBUG_ERROROUT("GUI_ARRAY_InsertBlankItem: Failed to alloc buffer");
;;;62 } else {
;;;63 WM_HMEM *pOldBuffer;
;;;64 WM_HMEM *pNewBuffer;
;;;65 pNewBuffer = (WM_HMEM*) GUI_ALLOC_h2p(hNewBuffer);
00001c 4630 MOV r0,r6
00001e f7fffffe BL GUI_ALLOC_h2p
000022 4680 MOV r8,r0
;;;66 pOldBuffer = (WM_HMEM*) GUI_ALLOC_h2p(pThis->haHandle);
000024 f9b40002 LDRSH r0,[r4,#2]
000028 f7fffffe BL GUI_ALLOC_h2p
00002c 4607 MOV r7,r0
;;;67 memcpy(pNewBuffer, pOldBuffer, Index * sizeof(WM_HMEM));
00002e 4601 MOV r1,r0
000030 006a LSLS r2,r5,#1
000032 4640 MOV r0,r8
000034 f7fffffe BL __aeabi_memcpy
;;;68 memcpy(pNewBuffer + (Index + 1), pOldBuffer + Index, (pThis->NumItems - Index) * sizeof(WM_HMEM));
000038 8820 LDRH r0,[r4,#0]
00003a eb070145 ADD r1,r7,r5,LSL #1
00003e 1b40 SUBS r0,r0,r5
000040 0042 LSLS r2,r0,#1
000042 eb080045 ADD r0,r8,r5,LSL #1
000046 1c80 ADDS r0,r0,#2
000048 f7fffffe BL __aeabi_memcpy
;;;69 GUI_ALLOC_Free(pThis->haHandle);
00004c f9b40002 LDRSH r0,[r4,#2]
000050 f7fffffe BL GUI_ALLOC_Free
;;;70 pThis->haHandle = hNewBuffer;
000054 8066 STRH r6,[r4,#2]
;;;71 pThis->NumItems++;
000056 8820 LDRH r0,[r4,#0]
000058 1c40 ADDS r0,r0,#1
00005a 8020 STRH r0,[r4,#0]
;;;72 return 1; /* Successfull */
00005c 2001 MOVS r0,#1
|L1.94|
;;;73 }
;;;74 }
;;;75 return 0; /* Failed */
;;;76 }
00005e e8bd81f0 POP {r4-r8,pc}
|L1.98|
000062 2000 MOVS r0,#0 ;75
000064 e7fb B |L1.94|
;;;77
ENDP
AREA ||i.GUI_ARRAY_InsertItem||, CODE, READONLY, ALIGN=1
GUI_ARRAY_InsertItem PROC
;;;99 */
;;;100 WM_HMEM GUI_ARRAY_InsertItem(GUI_ARRAY* pThis, unsigned int Index, int Len) {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 4605 MOV r5,r0
000006 460e MOV r6,r1
000008 4617 MOV r7,r2
;;;101 WM_HMEM hNewBuffer = 0;
00000a 2400 MOVS r4,#0
;;;102 if (GUI_ARRAY_InsertBlankItem(pThis, Index)) {
00000c f7fffffe BL GUI_ARRAY_InsertBlankItem
000010 b130 CBZ r0,|L2.32|
;;;103 hNewBuffer = GUI_ARRAY_SetItem(pThis, Index, 0, Len);
000012 463b MOV r3,r7
000014 2200 MOVS r2,#0
000016 4631 MOV r1,r6
000018 4628 MOV r0,r5
00001a f7fffffe BL GUI_ARRAY_SetItem
00001e 4604 MOV r4,r0
|L2.32|
;;;104 }
;;;105 return hNewBuffer;
000020 4620 MOV r0,r4
;;;106 }
000022 e8bd81f0 POP {r4-r8,pc}
;;;107
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -