📄 guidev_16.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_16.o --depend=.\Obj\guidev_16.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_16.c]
THUMB
AREA ||i._DrawBitLine1BPP||, CODE, READONLY, ALIGN=2
_DrawBitLine1BPP PROC
;;;89 */
;;;90 static void _DrawBitLine1BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, unsigned int xsize,
000000 e92d5fff PUSH {r0-r12,lr}
;;;91 const LCD_PIXELINDEX* pTrans, GUI_MEMDEV* pDev, PIXELINDEX* pDest)
;;;92 {
000004 4689 MOV r9,r1
000006 4698 MOV r8,r3
;;;93 PIXELINDEX Index1;
;;;94 PIXELINDEX IndexMask;
;;;95 unsigned pixels;
;;;96 unsigned PixelCnt;
;;;97 PixelCnt = 8 - Diff;
000008 e9dd170e LDRD r1,r7,[sp,#0x38]
;;;98 pixels = LCD_aMirror[*p] >> Diff;
00000c 781b LDRB r3,[r3,#0]
00000e 4d3e LDR r5,|L1.264|
000010 4683 MOV r11,r0 ;92
000012 5ced LDRB r5,[r5,r3]
000014 f1c10408 RSB r4,r1,#8 ;97
000018 40cd LSRS r5,r5,r1
;;;99
;;;100 GUI_DEBUG_ERROROUT3_IF( x < pDev->x0, "GUIDEV.c: DrawBitLine1BPP, Act= %d, Border= %d, Clip= %d", x,pDev->x0, GUI_Context.ClipRect.x0);
;;;101
;;;102 switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
00001a 493c LDR r1,|L1.268|
00001c a810 ADD r0,sp,#0x40
00001e c845 LDM r0,{r0,r2,r6}
000020 7b09 LDRB r1,[r1,#0xc] ; GUI_Context
000022 f0110103 ANDS r1,r1,#3
000026 d006 BEQ |L1.54|
000028 2901 CMP r1,#1
00002a d050 BEQ |L1.206|
00002c 2902 CMP r1,#2
00002e d168 BNE |L1.258|
;;;103 case 0: /* Write mode */
;;;104 do {
;;;105 /* Prepare loop */
;;;106 if (PixelCnt > xsize) {
;;;107 PixelCnt = xsize;
;;;108 }
;;;109 xsize -= PixelCnt;
;;;110 /* Write as many pixels as we are allowed to and have loaded in this inner loop */
;;;111 do {
;;;112 *pDest++ = *(pTrans + (pixels & 1));
;;;113 pixels >>= 1;
;;;114 } while (--PixelCnt);
;;;115 /* Check if an other Source byte needs to be loaded */
;;;116 if (xsize == 0) {
;;;117 return;
;;;118 }
;;;119 PixelCnt = 8;
;;;120 pixels = LCD_aMirror[*++p];
;;;121 } while (1);
;;;122 case LCD_DRAWMODE_TRANS:
;;;123 Index1 = *(pTrans + 1);
000030 f8b0a002 LDRH r10,[r0,#2]
;;;124 do {
000034 e016 B |L1.100|
|L1.54|
000036 4934 LDR r1,|L1.264|
|L1.56|
000038 42bc CMP r4,r7 ;106
00003a d900 BLS |L1.62|
00003c 463c MOV r4,r7 ;107
|L1.62|
00003e 1b3f SUBS r7,r7,r4 ;109
|L1.64|
000040 f0050201 AND r2,r5,#1 ;112
000044 f8302012 LDRH r2,[r0,r2,LSL #1] ;112
000048 086d LSRS r5,r5,#1 ;113
00004a f8262b02 STRH r2,[r6],#2 ;112
00004e 1e64 SUBS r4,r4,#1 ;114
000050 d1f6 BNE |L1.64|
000052 2f00 CMP r7,#0 ;116
000054 d055 BEQ |L1.258|
000056 f1080201 ADD r2,r8,#1 ;120
00005a 4690 MOV r8,r2 ;120
00005c 7812 LDRB r2,[r2,#0] ;120
00005e 2408 MOVS r4,#8 ;119
000060 5c8d LDRB r5,[r1,r2] ;120
000062 e7e9 B |L1.56|
|L1.100|
;;;125 /* Prepare loop */
;;;126 if (PixelCnt > xsize) {
000064 42bc CMP r4,r7
000066 d900 BLS |L1.106|
;;;127 PixelCnt = xsize;
000068 463c MOV r4,r7
|L1.106|
;;;128 }
;;;129 xsize -= PixelCnt;
00006a 1b3f SUBS r7,r7,r4
;;;130 if (pUsage) {
00006c f1bb0f00 CMP r11,#0
000070 d016 BEQ |L1.160|
|L1.114|
;;;131 do {
;;;132 if (pixels == 0) { /* Early out optimization; not required */
000072 b91d CBNZ r5,|L1.124|
;;;133 pDest += PixelCnt;
000074 eb060644 ADD r6,r6,r4,LSL #1
;;;134 x += PixelCnt;
000078 44a1 ADD r9,r9,r4
;;;135 break;
00007a e01e B |L1.186|
|L1.124|
;;;136 }
;;;137 if ((pixels & 1)) {
00007c 07e8 LSLS r0,r5,#31
00007e d008 BEQ |L1.146|
;;;138 GUI_USAGE_AddPixel(pUsage, x, y);
000080 f8db0008 LDR r0,[r11,#8]
000084 4649 MOV r1,r9
000086 6803 LDR r3,[r0,#0]
000088 4658 MOV r0,r11
00008a 9a02 LDR r2,[sp,#8]
00008c 4798 BLX r3
;;;139 *pDest = Index1;
00008e f8a6a000 STRH r10,[r6,#0]
|L1.146|
;;;140 }
;;;141 x++;
;;;142 pDest++;
000092 1cb6 ADDS r6,r6,#2
000094 f1090901 ADD r9,r9,#1 ;141
;;;143 if (--PixelCnt == 0) {
000098 1e64 SUBS r4,r4,#1
00009a d00e BEQ |L1.186|
;;;144 break;
;;;145 }
;;;146 pixels >>= 1;
00009c 086d LSRS r5,r5,#1
;;;147 } while (1);
00009e e7e8 B |L1.114|
|L1.160|
;;;148 } else {
;;;149 do {
;;;150 if (pixels == 0) { /* Early out optimization; not required */
0000a0 b915 CBNZ r5,|L1.168|
;;;151 pDest += PixelCnt;
0000a2 eb060644 ADD r6,r6,r4,LSL #1
;;;152 break;
0000a6 e008 B |L1.186|
|L1.168|
;;;153 }
;;;154 if ((pixels & 1)) {
0000a8 07e8 LSLS r0,r5,#31
0000aa d001 BEQ |L1.176|
;;;155 *pDest = Index1;
0000ac f8a6a000 STRH r10,[r6,#0]
|L1.176|
;;;156 }
;;;157 pDest++;
0000b0 1cb6 ADDS r6,r6,#2
;;;158 if (--PixelCnt == 0) {
0000b2 1e64 SUBS r4,r4,#1
0000b4 d001 BEQ |L1.186|
;;;159 break;
;;;160 }
;;;161 pixels >>= 1;
0000b6 086d LSRS r5,r5,#1
;;;162 } while (1);
0000b8 e7f2 B |L1.160|
|L1.186|
;;;163 }
;;;164 /* Check if an other Source byte needs to be loaded */
;;;165 if (xsize == 0) {
0000ba 2f00 CMP r7,#0
0000bc d021 BEQ |L1.258|
;;;166 return;
;;;167 }
;;;168 PixelCnt = 8;
;;;169 pixels = LCD_aMirror[*(++p)];
0000be f1080001 ADD r0,r8,#1
0000c2 4680 MOV r8,r0
0000c4 7800 LDRB r0,[r0,#0]
0000c6 4910 LDR r1,|L1.264|
0000c8 2408 MOVS r4,#8 ;168
0000ca 5c0d LDRB r5,[r1,r0]
;;;170 } while (1);
0000cc e7ca B |L1.100|
|L1.206|
;;;171 case LCD_DRAWMODE_XOR:
;;;172 IndexMask = pDev->pfGetIndexMask();
0000ce 6a50 LDR r0,[r2,#0x24]
0000d0 4780 BLX r0
0000d2 490d LDR r1,|L1.264|
0000d4 b280 UXTH r0,r0
|L1.214|
;;;173 do {
;;;174 /* Prepare loop */
;;;175 if (PixelCnt > xsize) {
0000d6 42bc CMP r4,r7
0000d8 d900 BLS |L1.220|
;;;176 PixelCnt = xsize;
0000da 463c MOV r4,r7
|L1.220|
;;;177 }
;;;178 xsize -= PixelCnt;
0000dc 1b3f SUBS r7,r7,r4
|L1.222|
;;;179 /* Write as many pixels as we are allowed to and have loaded in this inner loop */
;;;180 do {
;;;181 if ((pixels & 1)) {
0000de 07ea LSLS r2,r5,#31
0000e0 d002 BEQ |L1.232|
;;;182 *pDest ^= IndexMask;
0000e2 8832 LDRH r2,[r6,#0]
0000e4 4042 EORS r2,r2,r0
0000e6 8032 STRH r2,[r6,#0]
|L1.232|
;;;183 }
;;;184 *pDest++;
0000e8 1cb6 ADDS r6,r6,#2
;;;185 pixels >>= 1;
0000ea 086d LSRS r5,r5,#1
;;;186 } while (--PixelCnt);
0000ec 1e64 SUBS r4,r4,#1
0000ee d1f6 BNE |L1.222|
;;;187 /* Check if an other Source byte needs to be loaded */
;;;188 if (xsize == 0) {
0000f0 2f00 CMP r7,#0
0000f2 d006 BEQ |L1.258|
;;;189 return;
;;;190 }
;;;191 PixelCnt = 8;
;;;192 pixels = LCD_aMirror[*(++p)];
0000f4 f1080201 ADD r2,r8,#1
0000f8 4690 MOV r8,r2
0000fa 7812 LDRB r2,[r2,#0]
0000fc 2408 MOVS r4,#8 ;191
0000fe 5c8d LDRB r5,[r1,r2]
;;;193 } while (1);
000100 e7e9 B |L1.214|
|L1.258|
;;;194 }
;;;195 }
000102 e8bd9fff POP {r0-r12,pc}
;;;196
ENDP
000106 0000 DCW 0x0000
|L1.264|
DCD LCD_aMirror
|L1.268|
DCD GUI_Context
AREA ||i._DrawBitLine2BPP||, CODE, READONLY, ALIGN=2
_DrawBitLine2BPP PROC
;;;200 */
;;;201 static void _DrawBitLine2BPP(GUI_USAGE* pUsage, int x, int y, const U8 GUI_UNI_PTR * p, int Diff, int xsize,
000000 e92d5fff PUSH {r0-r12,lr}
;;;202 const LCD_PIXELINDEX* pTrans, PIXELINDEX* pDest)
;;;203 {
000004 4683 MOV r11,r0
;;;204 U8 pixels;
;;;205 U8 PixelCnt;
;;;206 PixelCnt = 4 - Diff;
000006 e9dd060e LDRD r0,r6,[sp,#0x38]
00000a 4689 MOV r9,r1 ;203
00000c f1c00104 RSB r1,r0,#4
000010 b2cc UXTB r4,r1
;;;207 pixels = (*p) << (Diff << 1);
000012 0042 LSLS r2,r0,#1
000014 7819 LDRB r1,[r3,#0]
;;;208 switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS | LCD_DRAWMODE_XOR)) {
000016 4833 LDR r0,|L2.228|
000018 4091 LSLS r1,r1,r2 ;207
00001a 7b00 LDRB r0,[r0,#0xc] ; GUI_Context
00001c e9dda710 LDRD r10,r7,[sp,#0x40]
000020 4698 MOV r8,r3 ;203
000022 b2cd UXTB r5,r1 ;207
000024 f0100003 ANDS r0,r0,#3
000028 d004 BEQ |L2.52|
00002a 2801 CMP r0,#1
00002c d03e BEQ |L2.172|
00002e 2802 CMP r0,#2
000030 d155 BNE |L2.222|
000032 e016 B |L2.98|
|L2.52|
;;;209 case 0: /* Write mode */
;;;210 PixelLoopWrite:
;;;211 if (PixelCnt > xsize) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -