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 + -
显示快捷键?