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

📄 gui_array_insertitem.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 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 + -