📄 guidev_aa.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_aa.o --depend=.\Obj\guidev_aa.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_AA.c]
THUMB
AREA ||i.GUI_MEMDEV_CopyFromLCDAA||, CODE, READONLY, ALIGN=2
GUI_MEMDEV_CopyFromLCDAA PROC
;;;123 */
;;;124 void GUI_MEMDEV_CopyFromLCDAA(GUI_MEMDEV_Handle hMem) {
000000 e92d4ffe PUSH {r1-r11,lr}
;;;125 /* Make sure memory handle is valid */
;;;126 if (!hMem) {
000004 b920 CBNZ r0,|L1.16|
;;;127 hMem = GUI_Context.hDevData;
000006 4830 LDR r0,|L1.200|
000008 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
;;;128 }
;;;129 if (hMem) {
00000c 2800 CMP r0,#0
00000e d058 BEQ |L1.194|
|L1.16|
;;;130 int x, y;
;;;131 GUI_MEMDEV* pDevData = (GUI_MEMDEV*) GUI_ALLOC_h2p(hMem); /* Convert to pointer */
000010 f7fffffe BL GUI_ALLOC_h2p
000014 4605 MOV r5,r0
;;;132 GUI_USAGE* pUsage = 0;
;;;133 int x0 = pDevData->x0;
000016 f9b0b000 LDRSH r11,[r0,#0]
;;;134 int y0 = pDevData->y0;
00001a f9b00002 LDRSH r0,[r0,#2]
;;;135 int XMax = pDevData->XSize/2;
00001e 9001 STR r0,[sp,#4]
000020 f9b50004 LDRSH r0,[r5,#4]
000024 f04f0900 MOV r9,#0 ;132
000028 eb0070d0 ADD r0,r0,r0,LSR #31
00002c ea4f0a60 ASR r10,r0,#1
;;;136 int YMax = pDevData->YSize/2;
000030 f9b50006 LDRSH r0,[r5,#6]
;;;137 LCD_PIXELINDEX* pData = (LCD_PIXELINDEX*)(pDevData+1);
000034 f105042c ADD r4,r5,#0x2c
000038 eb0070d0 ADD r0,r0,r0,LSR #31 ;136
00003c 1040 ASRS r0,r0,#1 ;136
;;;138 int LineOff = pDevData->BytesPerLine;
00003e 9000 STR r0,[sp,#0]
;;;139 if (pDevData->hUsage)
000040 f9b50018 LDRSH r0,[r5,#0x18]
000044 f8d5800c LDR r8,[r5,#0xc]
000048 b110 CBZ r0,|L1.80|
;;;140 pUsage = GUI_USAGE_H2P(pDevData->hUsage);
00004a f7fffffe BL GUI_ALLOC_h2p
00004e 4681 MOV r9,r0
|L1.80|
;;;141 for (y=0; y< YMax; y++) {
000050 2700 MOVS r7,#0
000052 e033 B |L1.188|
|L1.84|
;;;142 if (pUsage) {
000054 f1b90f00 CMP r9,#0
000058 d013 BEQ |L1.130|
;;;143 GUI_USAGE_AddHLine(pUsage, 0, y*2, pDevData->XSize);
00005a f8d90008 LDR r0,[r9,#8]
00005e 007a LSLS r2,r7,#1
000060 6846 LDR r6,[r0,#4]
000062 f9b53004 LDRSH r3,[r5,#4]
000066 2100 MOVS r1,#0
000068 4648 MOV r0,r9
00006a 47b0 BLX r6
;;;144 GUI_USAGE_AddHLine(pUsage, 0, y*2+1, pDevData->XSize);
00006c 2001 MOVS r0,#1
00006e eb000247 ADD r2,r0,r7,LSL #1
000072 f8d90008 LDR r0,[r9,#8]
000076 f9b53004 LDRSH r3,[r5,#4]
00007a 6846 LDR r6,[r0,#4]
00007c 2100 MOVS r1,#0
00007e 4648 MOV r0,r9
000080 47b0 BLX r6
|L1.130|
;;;145 }
;;;146 for (x=0; x< XMax; x++) {
;;;147 *pData = *(pData+1) = *(pData+LineOff) = *(pData+LineOff+1) = LCD_GetPixelIndex(x+x0,y+y0);
000082 9801 LDR r0,[sp,#4]
000084 2600 MOVS r6,#0 ;146
000086 4438 ADD r0,r0,r7
000088 9002 STR r0,[sp,#8] ;146
00008a e00d B |L1.168|
|L1.140|
00008c eb06000b ADD r0,r6,r11
000090 9902 LDR r1,[sp,#8]
000092 f7fffffe BL LCD_GetPixelIndex
000096 eb040148 ADD r1,r4,r8,LSL #1
00009a 8048 STRH r0,[r1,#2]
00009c f8240018 STRH r0,[r4,r8,LSL #1]
0000a0 8060 STRH r0,[r4,#2]
0000a2 f8240b04 STRH r0,[r4],#4
0000a6 1c76 ADDS r6,r6,#1 ;146
|L1.168|
0000a8 4556 CMP r6,r10 ;146
0000aa dbef BLT |L1.140|
;;;148 pData+=2;
;;;149 }
;;;150 pData += LineOff + (pDevData->XSize&1);
0000ac 88a9 LDRH r1,[r5,#4]
0000ae 1c7f ADDS r7,r7,#1 ;141
0000b0 f0010101 AND r1,r1,#1
0000b4 eb010008 ADD r0,r1,r8
0000b8 eb040440 ADD r4,r4,r0,LSL #1
|L1.188|
0000bc 9800 LDR r0,[sp,#0] ;141
0000be 4287 CMP r7,r0 ;141
0000c0 dbc8 BLT |L1.84|
|L1.194|
;;;151 }
;;;152 }
;;;153 }
0000c2 e8bd8ffe POP {r1-r11,pc}
;;;154
ENDP
0000c6 0000 DCW 0x0000
|L1.200|
DCD GUI_Context
AREA ||i.GUI_MEMDEV_CopyToLCDAA||, CODE, READONLY, ALIGN=2
GUI_MEMDEV_CopyToLCDAA PROC
;;;58 */
;;;59 void GUI_MEMDEV_CopyToLCDAA(GUI_MEMDEV_Handle hMem) {
000000 e92d4ff0 PUSH {r4-r11,lr}
000004 b085 SUB sp,sp,#0x14
;;;60 GUI_LOCK();
;;;61 /* Make sure memory handle is valid */
;;;62 if (hMem) {
000006 2800 CMP r0,#0
000008 d073 BEQ |L2.242|
;;;63 GUI_MEMDEV_Handle hMemPrev;
;;;64 #if GUI_NUM_LAYERS > 1
;;;65 int PrevLayer;
;;;66 #endif
;;;67 int x, y;
;;;68 GUI_MEMDEV* pDev = (GUI_MEMDEV*)GUI_ALLOC_h2p(hMem); /* Convert to pointer */
00000a f7fffffe BL GUI_ALLOC_h2p
;;;69 LCD_PIXELINDEX* pData0 = (LCD_PIXELINDEX*)(pDev+1);
;;;70 int LineOff = pDev->XSize;
00000e f9b07004 LDRSH r7,[r0,#4]
;;;71 int x0 = pDev->x0;
000012 f9b01000 LDRSH r1,[r0,#0]
;;;72 int y0 = pDev->y0;
000016 9103 STR r1,[sp,#0xc]
000018 f9b01002 LDRSH r1,[r0,#2]
;;;73 int XMax = pDev->XSize / 2;
00001c 9102 STR r1,[sp,#8]
00001e eb0771d7 ADD r1,r7,r7,LSR #31
000022 1049 ASRS r1,r1,#1
000024 f100082c ADD r8,r0,#0x2c ;69
;;;74 int YMax = pDev->YSize / 2;
000028 9101 STR r1,[sp,#4]
00002a f9b00006 LDRSH r0,[r0,#6]
00002e eb0070d0 ADD r0,r0,r0,LSR #31
000032 1040 ASRS r0,r0,#1
;;;75 hMemPrev = GUI_Context.hDevData;
000034 9000 STR r0,[sp,#0]
000036 4830 LDR r0,|L2.248|
000038 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
;;;76 #if GUI_NUM_LAYERS > 1
;;;77 PrevLayer = GUI_SelectLayer(pDev->LayerIndex); /* Should not we switch back to the orig. layer when done ? */
;;;78 #else
;;;79 GUI_SelectLCD(); /* Activate LCD */
00003c 9004 STR r0,[sp,#0x10]
00003e f7fffffe BL GUI_SelectLCD
;;;80 #endif
;;;81 for (y = 0; y < YMax; y++) {
000042 2600 MOVS r6,#0
000044 e04c B |L2.224|
|L2.70|
;;;82 LCD_PIXELINDEX* pData = pData0;
000046 4644 MOV r4,r8
;;;83 for (x = 0; x < XMax; x++) {
000048 2500 MOVS r5,#0
00004a e043 B |L2.212|
|L2.76|
;;;84 LCD_PIXELINDEX PixelIndex;
;;;85 int ColorSep[3];
;;;86 U32 Color = LCD_Index2Color(*pData);
00004c 8820 LDRH r0,[r4,#0]
00004e f7fffffe BL LCD_Index2Color
;;;87 ColorSep[0] = Color&255;
000052 f00009ff AND r9,r0,#0xff
;;;88 ColorSep[1] = (Color>>8) &255;
000056 f3c02a07 UBFX r10,r0,#8,#8
;;;89 ColorSep[2] = (Color>>16) &255;
00005a f3c04b07 UBFX r11,r0,#16,#8
;;;90 Color = LCD_Index2Color(*(pData+1));
00005e 8860 LDRH r0,[r4,#2]
000060 f7fffffe BL LCD_Index2Color
;;;91 ColorSep[0] += Color&255;
000064 b2c2 UXTB r2,r0
000066 4491 ADD r9,r9,r2
;;;92 ColorSep[1] += (Color>>8) &255;
000068 f3c02207 UBFX r2,r0,#8,#8
;;;93 ColorSep[2] += (Color>>16) &255;
00006c f3c04007 UBFX r0,r0,#16,#8
000070 4483 ADD r11,r11,r0
000072 4492 ADD r10,r10,r2 ;92
;;;94 Color = LCD_Index2Color(*(pData+LineOff));
000074 f8340017 LDRH r0,[r4,r7,LSL #1]
000078 f7fffffe BL LCD_Index2Color
;;;95 ColorSep[0] += Color&255;
00007c b2c2 UXTB r2,r0
00007e 4491 ADD r9,r9,r2
;;;96 ColorSep[1] += (Color>>8) &255;
000080 f3c02207 UBFX r2,r0,#8,#8
;;;97 ColorSep[2] += (Color>>16) &255;
000084 f3c04007 UBFX r0,r0,#16,#8
000088 4483 ADD r11,r11,r0
;;;98 Color = LCD_Index2Color(*(pData+LineOff+1));
00008a eb040047 ADD r0,r4,r7,LSL #1
00008e 4492 ADD r10,r10,r2 ;96
000090 8840 LDRH r0,[r0,#2]
000092 f7fffffe BL LCD_Index2Color
;;;99 ColorSep[0] += Color&255;
000096 b2c2 UXTB r2,r0
;;;100 ColorSep[1] += (Color>>8) &255;
000098 f3c02307 UBFX r3,r0,#8,#8
00009c eb090102 ADD r1,r9,r2 ;99
0000a0 eb0a0203 ADD r2,r10,r3
;;;101 ColorSep[2] += (Color>>16) &255;
0000a4 f3c04007 UBFX r0,r0,#16,#8
0000a8 4458 ADD r0,r0,r11
;;;102 Color = (ColorSep[0]+2)>>2;
0000aa 1c89 ADDS r1,r1,#2
;;;103 Color |= ((ColorSep[1]+2)>>2)<<8;
0000ac 1c92 ADDS r2,r2,#2
0000ae 1089 ASRS r1,r1,#2 ;102
0000b0 1092 ASRS r2,r2,#2
;;;104 Color |= ((U32)((ColorSep[2]+2)>>2))<<16;
0000b2 1c80 ADDS r0,r0,#2
0000b4 ea412102 ORR r1,r1,r2,LSL #8 ;103
0000b8 1080 ASRS r0,r0,#2
0000ba ea414000 ORR r0,r1,r0,LSL #16
;;;105 PixelIndex = LCD_Color2Index(Color);
0000be f7fffffe BL LCD_Color2Index
0000c2 b282 UXTH r2,r0
;;;106 LCD_SetPixelIndex(x+x0, y+y0, PixelIndex);
0000c4 9802 LDR r0,[sp,#8]
0000c6 1831 ADDS r1,r6,r0
0000c8 9803 LDR r0,[sp,#0xc]
0000ca 4428 ADD r0,r0,r5
0000cc f7fffffe BL LCD_SetPixelIndex
;;;107 pData += 2;
0000d0 1d24 ADDS r4,r4,#4
0000d2 1c6d ADDS r5,r5,#1 ;83
|L2.212|
0000d4 9801 LDR r0,[sp,#4] ;83
0000d6 4285 CMP r5,r0 ;83
0000d8 dbb8 BLT |L2.76|
;;;108 }
;;;109 pData0 += 2 * LineOff;
0000da eb080887 ADD r8,r8,r7,LSL #2
0000de 1c76 ADDS r6,r6,#1 ;81
|L2.224|
0000e0 9800 LDR r0,[sp,#0] ;81
0000e2 4286 CMP r6,r0 ;81
0000e4 dbaf BLT |L2.70|
;;;110 }
;;;111 #if GUI_NUM_LAYERS > 1
;;;112 GUI_SelectLayer(PrevLayer);
;;;113 #endif
;;;114 /* Reactivate previously used device */
;;;115 GUI_MEMDEV_Select(hMemPrev);
0000e6 9804 LDR r0,[sp,#0x10]
0000e8 b005 ADD sp,sp,#0x14
0000ea e8bd4ff0 POP {r4-r11,lr}
0000ee f7ffbffe B.W GUI_MEMDEV_Select
|L2.242|
;;;116 }
;;;117 GUI_UNLOCK();
;;;118 }
0000f2 b005 ADD sp,sp,#0x14
0000f4 e8bd8ff0 POP {r4-r11,pc}
;;;119
ENDP
|L2.248|
DCD GUI_Context
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -