guidev_cmpwithlcd.txt

来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 168 行

TXT
168
字号
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_cmpwithlcd.o --depend=.\Obj\guidev_cmpwithlcd.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\MemDev\GUIDEV_CmpWithLCD.c]
                          THUMB

                          AREA ||i.GUI_MEMDEV_CompareWithLCD||, CODE, READONLY, ALIGN=2

                  GUI_MEMDEV_CompareWithLCD PROC
;;;44     */
;;;45     int GUI_MEMDEV_CompareWithLCD(GUI_MEMDEV_Handle hMem, int*px, int*py, int *pExp, int*pAct) {
000000  e92d4fff          PUSH     {r0-r11,lr}
000004  b085              SUB      sp,sp,#0x14
;;;46       int Ret = 0;
000006  2100              MOVS     r1,#0
;;;47       /* Make sure memory handle is valid */
;;;48       if (!hMem) {
000008  9103              STR      r1,[sp,#0xc]
00000a  b938              CBNZ     r0,|L1.28|
;;;49         hMem = GUI_Context.hDevData;
00000c  4830              LDR      r0,|L1.208|
00000e  f9b0004c          LDRSH    r0,[r0,#0x4c]  ; GUI_Context
;;;50       }
;;;51       if (!hMem) {
000012  b918              CBNZ     r0,|L1.28|
;;;52         return 1;
000014  2001              MOVS     r0,#1
                  |L1.22|
;;;53       }
;;;54       GUI_LOCK();
;;;55       {
;;;56         GUI_MEMDEV * pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem);  /* Convert to pointer */
;;;57         int y    = pDevData->y0;
;;;58         int x0   = pDevData->x0;
;;;59         int XMax = pDevData->XSize + x0;
;;;60         int YMax = pDevData->YSize + y;
;;;61         int Max;
;;;62         int MagX = LCD_GetXMag();
;;;63         int MagY = LCD_GetYMag();
;;;64         /* Calculate limits */
;;;65         if (y < 0) {
;;;66     			y = 0;
;;;67         }
;;;68         if (x0 < 0) {
;;;69     			x0 = 0;
;;;70         }
;;;71         Max = LCD_GET_YSIZE();
;;;72     		if (YMax > Max) {
;;;73     			YMax = Max;
;;;74         }
;;;75         Max = LCD_GET_XSIZE();
;;;76     		if (XMax > Max) {
;;;77     			XMax = Max;
;;;78         }
;;;79         for (; y < YMax; y++) {
;;;80           int x = x0;
;;;81           U8 * pData = (U8 *)GUI_MEMDEV__XY2PTR(x, y);
;;;82           for (x = x0; x < XMax; x++) {
;;;83             int Exp = *pData++;
;;;84             int Act = LCD_L0_GetPixelIndex(x * MagX, y * MagY);
;;;85             #if (GUI_NUM_LAYERS > 1)
;;;86             if (LCD_GetBitsPerPixelEx(GUI_Context.SelLayer) > 8)
;;;87             #else
;;;88             if (LCD_GetBitsPerPixel() > 8)
;;;89             #endif
;;;90             {
;;;91               Exp |= (*pData++) << 8;
;;;92             }
;;;93             if (Act != Exp) {
;;;94               *px    = x;
;;;95               *py    = y;
;;;96               *pAct  = Act;
;;;97               *pExp  = Exp;
;;;98               Ret = 1;
;;;99               goto Skip;
;;;100            }
;;;101          }
;;;102        }
;;;103      }
;;;104    Skip:
;;;105      GUI_UNLOCK();
;;;106      return Ret;
;;;107    }
000016  b009              ADD      sp,sp,#0x24
000018  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.28|
00001c  f7fffffe          BL       GUI_ALLOC_h2p
000020  f9b09000          LDRSH    r9,[r0,#0]            ;58
000024  f9b02004          LDRSH    r2,[r0,#4]            ;59
000028  f9b06002          LDRSH    r6,[r0,#2]            ;57
00002c  f9b00006          LDRSH    r0,[r0,#6]            ;60
000030  eb020809          ADD      r8,r2,r9              ;59
000034  eb000a06          ADD      r10,r0,r6             ;60
000038  f7fffffe          BL       LCD_GetXMag
00003c  9002              STR      r0,[sp,#8]            ;63
00003e  f7fffffe          BL       LCD_GetYMag
000042  9001              STR      r0,[sp,#4]            ;65
000044  2e00              CMP      r6,#0                 ;65
000046  da00              BGE      |L1.74|
000048  2600              MOVS     r6,#0                 ;66
                  |L1.74|
00004a  f1b90f00          CMP      r9,#0                 ;68
00004e  da01              BGE      |L1.84|
000050  f04f0900          MOV      r9,#0                 ;69
                  |L1.84|
000054  f7fffffe          BL       LCD_GetYSize
000058  4582              CMP      r10,r0                ;72
00005a  dd00              BLE      |L1.94|
00005c  4682              MOV      r10,r0                ;73
                  |L1.94|
00005e  f7fffffe          BL       LCD_GetXSize
000062  4580              CMP      r8,r0                 ;76
000064  dd2f              BLE      |L1.198|
000066  4680              MOV      r8,r0                 ;77
000068  e02d              B        |L1.198|
                  |L1.106|
00006a  464d              MOV      r5,r9                 ;80
00006c  4631              MOV      r1,r6                 ;81
00006e  4648              MOV      r0,r9                 ;81
000070  f7fffffe          BL       GUI_MEMDEV__XY2PTR
000074  4604              MOV      r4,r0                 ;81
000076  9801              LDR      r0,[sp,#4]            ;84
000078  4370              MULS     r0,r6,r0              ;84
00007a  9004              STR      r0,[sp,#0x10]         ;82
00007c  e020              B        |L1.192|
00007e  bf00              NOP                            ;83
                  |L1.128|
000080  9902              LDR      r1,[sp,#8]            ;84
000082  f8147b01          LDRB     r7,[r4],#1            ;83
000086  fb05f001          MUL      r0,r5,r1              ;84
00008a  9904              LDR      r1,[sp,#0x10]         ;84
00008c  f7fffffe          BL       LCD_L0_GetPixelIndex
000090  4683              MOV      r11,r0                ;84
000092  f7fffffe          BL       LCD_GetBitsPerPixel
000096  2808              CMP      r0,#8                 ;88
000098  dd03              BLE      |L1.162|
00009a  f8140b01          LDRB     r0,[r4],#1            ;91
00009e  ea472700          ORR      r7,r7,r0,LSL #8       ;91
                  |L1.162|
0000a2  45bb              CMP      r11,r7                ;93
0000a4  d00b              BEQ      |L1.190|
0000a6  9806              LDR      r0,[sp,#0x18]         ;94
0000a8  6005              STR      r5,[r0,#0]            ;95
0000aa  9807              LDR      r0,[sp,#0x1c]         ;95
0000ac  6006              STR      r6,[r0,#0]            ;96
0000ae  9812              LDR      r0,[sp,#0x48]         ;96
0000b0  f8c0b000          STR      r11,[r0,#0]           ;97
0000b4  9808              LDR      r0,[sp,#0x20]         ;97
0000b6  6007              STR      r7,[r0,#0]            ;98
0000b8  2001              MOVS     r0,#1                 ;98
0000ba  9003              STR      r0,[sp,#0xc]          ;99
0000bc  e7ab              B        |L1.22|
                  |L1.190|
0000be  1c6d              ADDS     r5,r5,#1              ;82
                  |L1.192|
0000c0  4545              CMP      r5,r8                 ;82
0000c2  dbdd              BLT      |L1.128|
0000c4  1c76              ADDS     r6,r6,#1              ;79
                  |L1.198|
0000c6  4556              CMP      r6,r10                ;79
0000c8  dbcf              BLT      |L1.106|
0000ca  9803              LDR      r0,[sp,#0xc]          ;104
0000cc  e7a3              B        |L1.22|
;;;108    
                          ENDP

0000ce  0000              DCW      0x0000
                  |L1.208|
                          DCD      GUI_Context

⌨️ 快捷键说明

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