📄 guidev_1.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_1.o --depend=.\Obj\guidev_1.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_1.c]
THUMB
AREA ||i._DrawBitLine1BPP||, CODE, READONLY, ALIGN=2
_DrawBitLine1BPP PROC
;;;94 */
;;;95 static void _DrawBitLine1BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, unsigned int xsize,
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;96 const LCD_PIXELINDEX* pTrans, GUI_MEMDEV* pDev, PIXELINDEX* pDest)
;;;97 {
;;;98 PIXELINDEX pixels;
;;;99 PIXELINDEX Index1;
;;;100 unsigned int PixelCnt;
;;;101 GUI_USE_PARA(pUsage);
;;;102 PixelCnt = 8 - (Diff & 7);
000004 e9dd060a LDRD r0,r6,[sp,#0x28]
000008 460f MOV r7,r1 ;97
00000a 4693 MOV r11,r2 ;97
00000c f0000007 AND r0,r0,#7
;;;103 pixels = (*p) << (Diff & 7);
000010 7819 LDRB r1,[r3,#0]
;;;104 GUI_DEBUG_ERROROUT3_IF( x < pDev->x0, "GUIDEV.c: DrawBitLine1BPP, Act= %d, Border= %d, Clip= %d"
;;;105 ,x,pDev->x0, GUI_Context.ClipRect.x0);
;;;106 switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
000012 4a34 LDR r2,|L1.228|
000014 4081 LSLS r1,r1,r0 ;103
000016 7b12 LDRB r2,[r2,#0xc] ; GUI_Context
000018 e9dda90c LDRD r10,r9,[sp,#0x30]
00001c f1c00408 RSB r4,r0,#8 ;102
000020 4698 MOV r8,r3 ;97
000022 b2cd UXTB r5,r1 ;103
000024 f0120003 ANDS r0,r2,#3
000028 d008 BEQ |L1.60|
00002a 2801 CMP r0,#1
00002c d03e BEQ |L1.172|
00002e 2802 CMP r0,#2
000030 d155 BNE |L1.222|
;;;107 case 0: /* Write mode */
;;;108 do {
;;;109 /* Prepare loop */
;;;110 if (PixelCnt > xsize) {
;;;111 PixelCnt = xsize;
;;;112 }
;;;113 xsize -= PixelCnt;
;;;114 /* Write as many pixels as we are allowed to and have loaded in this inner loop */
;;;115 do {
;;;116 (*pDev->pAPIList->pfSetPixelIndex)(x++, y, *(pTrans + ((U8)pixels >> 7)));
;;;117 pixels <<= 1;
;;;118 } while (--PixelCnt);
;;;119 /* Check if an other Source byte needs to be loaded */
;;;120 if (xsize == 0) {
;;;121 return;
;;;122 }
;;;123 PixelCnt = 8;
;;;124 pixels = *(++p);
;;;125 } while (1);
;;;126 case LCD_DRAWMODE_TRANS:
;;;127 Index1 = *(pTrans + 1);
000032 f8ba0002 LDRH r0,[r10,#2]
000036 f0000aff AND r10,r0,#0xff
;;;128 do {
00003a e019 B |L1.112|
|L1.60|
00003c 42b4 CMP r4,r6 ;110
00003e d900 BLS |L1.66|
000040 4634 MOV r4,r6 ;111
|L1.66|
000042 1b36 SUBS r6,r6,r4 ;113
|L1.68|
000044 09e8 LSRS r0,r5,#7 ;116
000046 f8d91028 LDR r1,[r9,#0x28] ;116
00004a f83a2010 LDRH r2,[r10,r0,LSL #1] ;116
00004e 4638 MOV r0,r7 ;116
000050 6a4b LDR r3,[r1,#0x24] ;116
000052 1c7f ADDS r7,r7,#1 ;116
000054 4659 MOV r1,r11 ;116
000056 4798 BLX r3 ;116
000058 0668 LSLS r0,r5,#25 ;117
00005a 0e05 LSRS r5,r0,#24 ;117
00005c 1e64 SUBS r4,r4,#1 ;118
00005e d1f1 BNE |L1.68|
000060 2e00 CMP r6,#0 ;120
000062 d03c BEQ |L1.222|
000064 f1080001 ADD r0,r8,#1 ;124
000068 2408 MOVS r4,#8 ;123
00006a 4680 MOV r8,r0 ;124
00006c 7805 LDRB r5,[r0,#0] ;124
00006e e7e5 B |L1.60|
|L1.112|
;;;129 /* Prepare loop */
;;;130 if (PixelCnt > xsize) {
000070 42b4 CMP r4,r6
000072 d900 BLS |L1.118|
;;;131 PixelCnt = xsize;
000074 4634 MOV r4,r6
|L1.118|
;;;132 }
;;;133 xsize -= PixelCnt;
000076 1b36 SUBS r6,r6,r4
;;;134 while (pixels) {
000078 e00d B |L1.150|
|L1.122|
;;;135 if ((pixels & 0x80)) {
00007a 0628 LSLS r0,r5,#24
00007c d506 BPL |L1.140|
;;;136 (*pDev->pAPIList->pfSetPixelIndex)(x, y, Index1);
00007e f8d90028 LDR r0,[r9,#0x28]
000082 4652 MOV r2,r10
000084 6a43 LDR r3,[r0,#0x24]
000086 4659 MOV r1,r11
000088 4638 MOV r0,r7
00008a 4798 BLX r3
|L1.140|
;;;137 }
;;;138 x++;
;;;139 pixels <<= 1;
00008c 0668 LSLS r0,r5,#25
00008e 1c7f ADDS r7,r7,#1 ;138
000090 0e05 LSRS r5,r0,#24
;;;140 if (--PixelCnt == 0) {
000092 1e64 SUBS r4,r4,#1
000094 d001 BEQ |L1.154|
|L1.150|
000096 2d00 CMP r5,#0 ;134
000098 d1ef BNE |L1.122|
|L1.154|
;;;141 break;
;;;142 }
;;;143 }
;;;144 /* Check if an other Source byte needs to be loaded */
;;;145 if (xsize == 0) {
00009a 2e00 CMP r6,#0
00009c d01f BEQ |L1.222|
;;;146 return;
;;;147 }
;;;148 x += PixelCnt;
;;;149 PixelCnt = 8;
;;;150 pixels = *(++p);
00009e f1080001 ADD r0,r8,#1
0000a2 4427 ADD r7,r7,r4 ;148
0000a4 2408 MOVS r4,#8 ;149
0000a6 4680 MOV r8,r0
0000a8 7805 LDRB r5,[r0,#0]
;;;151 } while (1);
0000aa e7e1 B |L1.112|
|L1.172|
;;;152 case LCD_DRAWMODE_XOR:;
;;;153 PixelLoopXor:
;;;154 if (PixelCnt > xsize) {
0000ac 42b4 CMP r4,r6
0000ae d900 BLS |L1.178|
;;;155 PixelCnt = xsize;
0000b0 4634 MOV r4,r6
|L1.178|
;;;156 }
;;;157 xsize -= PixelCnt;
0000b2 1b36 SUBS r6,r6,r4
|L1.180|
;;;158 do {
;;;159 if ((pixels & 0x80)) {
0000b4 0628 LSLS r0,r5,#24
0000b6 d505 BPL |L1.196|
;;;160 (*pDev->pAPIList->pfXorPixel)(x, y);
0000b8 f8d90028 LDR r0,[r9,#0x28]
0000bc 4659 MOV r1,r11
0000be 6a82 LDR r2,[r0,#0x28]
0000c0 4638 MOV r0,r7
0000c2 4790 BLX r2
|L1.196|
;;;161 }
;;;162 x++;
;;;163 pDest++;
;;;164 pixels <<= 1;
0000c4 0668 LSLS r0,r5,#25
0000c6 1c7f ADDS r7,r7,#1 ;162
0000c8 0e05 LSRS r5,r0,#24
;;;165 } while (--PixelCnt);
0000ca 1e64 SUBS r4,r4,#1
0000cc d1f2 BNE |L1.180|
;;;166 if (xsize) {
0000ce 2e00 CMP r6,#0
0000d0 d005 BEQ |L1.222|
;;;167 PixelCnt = 8;
;;;168 pixels = *(++p);
0000d2 f1080001 ADD r0,r8,#1
0000d6 2408 MOVS r4,#8 ;167
0000d8 4680 MOV r8,r0
0000da 7805 LDRB r5,[r0,#0]
;;;169 goto PixelLoopXor;
0000dc e7e6 B |L1.172|
|L1.222|
;;;170 }
;;;171 break;
;;;172 }
;;;173 }
0000de e8bd9ff0 POP {r4-r12,pc}
;;;174
ENDP
0000e2 0000 DCW 0x0000
|L1.228|
DCD GUI_Context
AREA ||i._DrawBitLine2BPP||, CODE, READONLY, ALIGN=2
_DrawBitLine2BPP PROC
;;;178 */
;;;179 static void _DrawBitLine2BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, int xsize,
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;180 const LCD_PIXELINDEX* pTrans, GUI_MEMDEV* pDev, PIXELINDEX* pDest)
;;;181 {
;;;182 U8 pixels;
;;;183 U8 PixelCnt;
;;;184 GUI_USE_PARA(pUsage);
;;;185 GUI_USE_PARA(pDest);
;;;186 PixelCnt = 4 - (Diff & 3);
000004 a80a ADD r0,sp,#0x28
000006 e8900641 LDM r0,{r0,r6,r9,r10}
00000a f0000003 AND r0,r0,#3
00000e 4693 MOV r11,r2 ;181
000010 460f MOV r7,r1 ;181
000012 f1c00404 RSB r4,r0,#4
;;;187 pixels = (*p) << ((Diff & 3) << 1);
000016 0042 LSLS r2,r0,#1
000018 7819 LDRB r1,[r3,#0]
;;;188 switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
00001a 4823 LDR r0,|L2.168|
00001c 4091 LSLS r1,r1,r2 ;187
00001e 7b00 LDRB r0,[r0,#0xc] ; GUI_Context
000020 4698 MOV r8,r3 ;181
000022 b2cd UXTB r5,r1 ;187
000024 f0100003 ANDS r0,r0,#3
000028 d002 BEQ |L2.48|
00002a 2802 CMP r0,#2
00002c d13a BNE |L2.164|
00002e e01b B |L2.104|
|L2.48|
;;;189 case 0: /* Write mode */
;;;190 PixelLoopWrite:
;;;191 if (PixelCnt > xsize) {
000030 42b4 CMP r4,r6
000032 dd00 BLE |L2.54|
;;;192 PixelCnt = xsize;
000034 b2f4 UXTB r4,r6
|L2.54|
;;;193 }
;;;194 xsize -= PixelCnt;
000036 1b36 SUBS r6,r6,r4
|L2.56|
;;;195 do {
;;;196 (*pDev->pAPIList->pfSetPixelIndex)(x++, y, *(pTrans + (pixels >> 6)));
000038 09a8 LSRS r0,r5,#6
00003a f8da1028 LDR r1,[r10,#0x28]
00003e f8392010 LDRH r2,[r9,r0,LSL #1]
000042 4638 MOV r0,r7
000044 6a4b LDR r3,[r1,#0x24]
000046 1c7f ADDS r7,r7,#1
000048 4659 MOV r1,r11
00004a 4798 BLX r3
00004c 06a8 LSLS r0,r5,#26
;;;197 pixels <<= 2;
00004e 0e05 LSRS r5,r0,#24
;;;198 } while (--PixelCnt);
000050 1e64 SUBS r4,r4,#1
000052 f01404ff ANDS r4,r4,#0xff
000056 d1ef BNE |L2.56|
;;;199 if (xsize) {
000058 2e00 CMP r6,#0
00005a d023 BEQ |L2.164|
;;;200 PixelCnt = 4;
;;;201 pixels = *(++p);
00005c f1080001 ADD r0,r8,#1
000060 2404 MOVS r4,#4 ;200
000062 4680 MOV r8,r0
000064 7805 LDRB r5,[r0,#0]
;;;202 goto PixelLoopWrite;
000066 e7e3 B |L2.48|
|L2.104|
;;;203 }
;;;204 break;
;;;205 case LCD_DRAWMODE_TRANS:
;;;206 PixelLoopTrans:
;;;207 if (PixelCnt > xsize)
000068 42b4 CMP r4,r6
00006a dd00 BLE |L2.110|
;;;208 PixelCnt = xsize;
00006c b2f4 UXTB r4,r6
|L2.110|
;;;209 xsize -= PixelCnt;
00006e 1b36 SUBS r6,r6,r4
|L2.112|
;;;210 do {
;;;211 if (pixels & 0xc0) {
000070 09a8 LSRS r0,r5,#6
000072 d008 BEQ |L2.134|
;;;212 (*pDev->pAPIList->pfSetPixelIndex)(x, y, *(pTrans + (pixels >> 6)));
000074 09a8 LSRS r0,r5,#6
000076 f8392010 LDRH r2,[r9,r0,LSL #1]
00007a f8da0028 LDR r0,[r10,#0x28]
00007e 4659 MOV r1,r11
000080 6a43 LDR r3,[r0,#0x24]
000082 4638 MOV r0,r7
000084 4798 BLX r3
|L2.134|
;;;213 }
;;;214 x++;
000086 06a8 LSLS r0,r5,#26
000088 1c7f ADDS r7,r7,#1
;;;215 pixels <<= 2;
00008a 0e05 LSRS r5,r0,#24
;;;216 } while (--PixelCnt);
00008c 1e64 SUBS r4,r4,#1
00008e f01404ff ANDS r4,r4,#0xff
000092 d1ed BNE |L2.112|
;;;217 if (xsize) {
000094 2e00 CMP r6,#0
000096 d005 BEQ |L2.164|
;;;218 PixelCnt = 4;
;;;219 pixels = *(++p);
000098 f1080001 ADD r0,r8,#1
00009c 2404 MOVS r4,#4 ;218
00009e 4680 MOV r8,r0
0000a0 7805 LDRB r5,[r0,#0]
;;;220 goto PixelLoopTrans;
0000a2 e7e1 B |L2.104|
|L2.164|
;;;221 }
;;;222 break;
;;;223 }
;;;224 }
0000a4 e8bd9ff0 POP {r4-r12,pc}
;;;225
ENDP
|L2.168|
DCD GUI_Context
AREA ||i._DrawBitLine4BPP||, CODE, READONLY, ALIGN=2
_DrawBitLine4BPP PROC
;;;229 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -