📄 guiaachar.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guiaachar.o --depend=.\Obj\guiaachar.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\AntiAlias\GUIAAChar.c]
THUMB
AREA ||i.Draw||, CODE, READONLY, ALIGN=2
Draw PROC
;;;55 */
;;;56 static void Draw(int x0, int y0, int XSize, int YSize, int BytesPerLine, const U8*pData) {
000000 e92d5fff PUSH {r0-r12,lr}
000004 460f MOV r7,r1
;;;57 int x, y;
;;;58 tSetPixelAA* pfSetPixelAA;
;;;59 pfSetPixelAA = (GUI_Context.TextMode & GUI_TM_TRANS)
;;;60 ? LCD_SetPixelAA : LCD_SetPixelAA_NoTrans;
000006 4930 LDR r1,|L1.200|
000008 4606 MOV r6,r0 ;56
00000a 8d49 LDRH r1,[r1,#0x2a] ; GUI_Context
00000c 482d LDR r0,|L1.196|
00000e f8ddb03c LDR r11,[sp,#0x3c]
000012 0789 LSLS r1,r1,#30
000014 d400 BMI |L1.24|
000016 482d LDR r0,|L1.204|
|L1.24|
;;;61 for (y=0; y<YSize; y++) {
000018 2500 MOVS r5,#0
00001a 4682 MOV r10,r0 ;60
00001c e04c B |L1.184|
|L1.30|
;;;62 const U8* pData0 = pData;
;;;63 const U8* pData1 = pData+BytesPerLine;
00001e 990e LDR r1,[sp,#0x38]
000020 46d8 MOV r8,r11 ;62
000022 eb0b0901 ADD r9,r11,r1
;;;64 for (x=0; x<XSize; x++) {
000026 2400 MOVS r4,#0
000028 e03f B |L1.170|
|L1.42|
;;;65 int PixelCnt=0;
;;;66 int Mask0 = Bit2Mask0[x&3];
;;;67 int Mask1 = Bit2Mask1[x&3];
00002a 4b29 LDR r3,|L1.208|
00002c f0040203 AND r2,r4,#3 ;66
000030 4927 LDR r1,|L1.208|
000032 1d1b ADDS r3,r3,#4
000034 5c89 LDRB r1,[r1,r2] ;66
000036 f813c002 LDRB r12,[r3,r2]
;;;68 if ((*pData0) & Mask0)
00003a f8982000 LDRB r2,[r8,#0]
00003e 2000 MOVS r0,#0 ;65
000040 420a TST r2,r1
000042 d000 BEQ |L1.70|
;;;69 PixelCnt++;
000044 2001 MOVS r0,#1
|L1.70|
;;;70 if ((*pData0) & Mask1)
000046 ea120f0c TST r2,r12
00004a d000 BEQ |L1.78|
;;;71 PixelCnt++;
00004c 1c40 ADDS r0,r0,#1
|L1.78|
;;;72 if ((*pData1) & Mask0)
00004e f8992000 LDRB r2,[r9,#0]
000052 420a TST r2,r1
000054 d000 BEQ |L1.88|
;;;73 PixelCnt++;
000056 1c40 ADDS r0,r0,#1
|L1.88|
;;;74 if ((*pData1) & Mask1)
000058 ea120f0c TST r2,r12
00005c d000 BEQ |L1.96|
;;;75 PixelCnt++;
00005e 1c40 ADDS r0,r0,#1
|L1.96|
;;;76 if ((x&3) ==3) {
000060 43e1 MVNS r1,r4
000062 0789 LSLS r1,r1,#30
000064 d103 BNE |L1.110|
;;;77 pData0++;
000066 f1080801 ADD r8,r8,#1
;;;78 pData1++;
00006a f1090901 ADD r9,r9,#1
|L1.110|
;;;79 }
;;;80 switch (PixelCnt) {
00006e 2801 CMP r0,#1
000070 d016 BEQ |L1.160|
000072 2802 CMP r0,#2
000074 d00e BEQ |L1.148|
000076 2803 CMP r0,#3
000078 d008 BEQ |L1.140|
00007a 2804 CMP r0,#4
00007c d114 BNE |L1.168|
;;;81 case 4: LCD_HL_DrawPixel(x0+x,y0+y); break;
00007e 4a12 LDR r2,|L1.200|
000080 1979 ADDS r1,r7,r5
000082 6d92 LDR r2,[r2,#0x58] ; GUI_Context
000084 1930 ADDS r0,r6,r4
000086 6852 LDR r2,[r2,#4]
000088 4790 BLX r2
00008a e00d B |L1.168|
|L1.140|
;;;82 case 3: (*pfSetPixelAA) (x0+x,y0+y, 12); break;
00008c 1979 ADDS r1,r7,r5
00008e 1930 ADDS r0,r6,r4
000090 220c MOVS r2,#0xc
000092 e002 B |L1.154|
|L1.148|
;;;83 case 2: (*pfSetPixelAA) (x0+x,y0+y, 8); break;
000094 1979 ADDS r1,r7,r5
000096 1930 ADDS r0,r6,r4
000098 2208 MOVS r2,#8
|L1.154|
00009a 4653 MOV r3,r10 ;82
00009c 4798 BLX r3 ;82
00009e e003 B |L1.168|
|L1.160|
;;;84 case 1: (*pfSetPixelAA) (x0+x,y0+y, 4); break;
0000a0 1979 ADDS r1,r7,r5
0000a2 1930 ADDS r0,r6,r4
0000a4 2204 MOVS r2,#4
0000a6 e7f8 B |L1.154|
|L1.168|
0000a8 1c64 ADDS r4,r4,#1 ;64
|L1.170|
0000aa 9802 LDR r0,[sp,#8] ;64
0000ac 4284 CMP r4,r0 ;64
0000ae dbbc BLT |L1.42|
;;;85 }
;;;86 }
;;;87 pData+=2*BytesPerLine;
0000b0 990e LDR r1,[sp,#0x38]
0000b2 1c6d ADDS r5,r5,#1 ;61
0000b4 eb0b0b41 ADD r11,r11,r1,LSL #1
|L1.184|
0000b8 9803 LDR r0,[sp,#0xc] ;61
0000ba 4285 CMP r5,r0 ;61
0000bc dbaf BLT |L1.30|
;;;88 }
;;;89 }
0000be e8bd9fff POP {r0-r12,pc}
;;;90
ENDP
0000c2 0000 DCW 0x0000
|L1.196|
DCD LCD_SetPixelAA
|L1.200|
DCD GUI_Context
|L1.204|
DCD LCD_SetPixelAA_NoTrans
|L1.208|
DCD ||.constdata||
AREA ||i.GUIPROPAA_DispChar||, CODE, READONLY, ALIGN=2
GUIPROPAA_DispChar PROC
;;;112 */
;;;113 void GUIPROPAA_DispChar(U16P c) {
000000 e92d41fc PUSH {r2-r8,lr}
;;;114 int BytesPerLine;
;;;115 GUI_DRAWMODE DrawMode = GUI_Context.TextMode;
000004 4d16 LDR r5,|L2.96|
000006 4604 MOV r4,r0 ;113
;;;116 const GUI_FONT_PROP* pProp = GUIPROP_FindChar(GUI_Context.pAFont->p.pProp, c);
000008 69a8 LDR r0,[r5,#0x18] ; GUI_Context
00000a f9b5602a LDRSH r6,[r5,#0x2a] ;115 ; GUI_Context
00000e 6980 LDR r0,[r0,#0x18]
000010 4621 MOV r1,r4
000012 f7fffffe BL GUIPROP_FindChar
;;;117 if (pProp) {
000016 2800 CMP r0,#0
000018 d020 BEQ |L2.92|
;;;118 GUI_DRAWMODE OldDrawMode;
;;;119 const GUI_CHARINFO* pCharInfo = pProp->paCharInfo+(c-pProp->First);
00001a 6841 LDR r1,[r0,#4]
00001c 8800 LDRH r0,[r0,#0]
00001e 1a20 SUBS r0,r4,r0
000020 eb0104c0 ADD r4,r1,r0,LSL #3
;;;120 BytesPerLine = pCharInfo->BytesPerLine;
000024 78a7 LDRB r7,[r4,#2]
;;;121 OldDrawMode = LCD_SetDrawMode(DrawMode);
000026 4630 MOV r0,r6
000028 f7fffffe BL LCD_SetDrawMode
;;;122 Draw ( GUI_Context.DispPosX, GUI_Context.DispPosY,
00002c 6863 LDR r3,[r4,#4]
00002e 4606 MOV r6,r0 ;121
000030 e9cd7300 STRD r7,r3,[sp,#0]
000034 69a8 LDR r0,[r5,#0x18] ; GUI_Context
000036 f9b51024 LDRSH r1,[r5,#0x24] ; GUI_Context
00003a 7d03 LDRB r3,[r0,#0x14]
00003c 7820 LDRB r0,[r4,#0]
00003e 1c40 ADDS r0,r0,#1
000040 0842 LSRS r2,r0,#1
000042 f9b50022 LDRSH r0,[r5,#0x22] ; GUI_Context
000046 f7fffffe BL Draw
;;;123 (pCharInfo->XSize+1)/2,
;;;124 GUI_Context.pAFont->YSize,
;;;125 BytesPerLine,
;;;126 (U8 const*) pCharInfo->pData
;;;127 );
;;;128 LCD_SetDrawMode(OldDrawMode); /* Restore draw mode */
00004a 4630 MOV r0,r6
00004c f7fffffe BL LCD_SetDrawMode
;;;129 GUI_Context.DispPosX += (pCharInfo->XDist+1)/2;
000050 7860 LDRB r0,[r4,#1]
000052 8c69 LDRH r1,[r5,#0x22] ; GUI_Context
000054 1c40 ADDS r0,r0,#1
000056 eb010050 ADD r0,r1,r0,LSR #1
00005a 8468 STRH r0,[r5,#0x22]
|L2.92|
;;;130 }
;;;131 }
00005c e8bd81fc POP {r2-r8,pc}
;;;132
ENDP
|L2.96|
DCD GUI_Context
AREA ||i.GUIPROPAA_GetCharDistX||, CODE, READONLY, ALIGN=2
GUIPROPAA_GetCharDistX PROC
;;;136 */
;;;137 int GUIPROPAA_GetCharDistX(U16P c) {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;138 int r;
;;;139 const GUI_FONT_PROP* pProp = GUIPROP_FindChar(GUI_Context.pAFont->p.pProp, c);
000004 4808 LDR r0,|L3.40|
000006 4621 MOV r1,r4
000008 6980 LDR r0,[r0,#0x18] ; GUI_Context
00000a 6980 LDR r0,[r0,#0x18]
00000c f7fffffe BL GUIPROP_FindChar
;;;140 r = (pProp) ? (pProp->paCharInfo+(c-pProp->First))->XSize : 0;
000010 b120 CBZ r0,|L3.28|
000012 6841 LDR r1,[r0,#4]
000014 8800 LDRH r0,[r0,#0]
000016 1a20 SUBS r0,r4,r0
000018 f8110030 LDRB r0,[r1,r0,LSL #3]
|L3.28|
;;;141 return (r+1)/2;
00001c 1c40 ADDS r0,r0,#1
00001e eb0070d0 ADD r0,r0,r0,LSR #31
000022 1040 ASRS r0,r0,#1
;;;142 }
000024 bd10 POP {r4,pc}
;;;143
ENDP
000026 0000 DCW 0x0000
|L3.40|
DCD GUI_Context
AREA ||i.GUIPROPAA_GetFontInfo||, CODE, READONLY, ALIGN=1
GUIPROPAA_GetFontInfo PROC
;;;147 */
;;;148 void GUIPROPAA_GetFontInfo(const GUI_FONT * pFont, GUI_FONTINFO* pfi) {
000000 2005 MOVS r0,#5
;;;149 GUI_USE_PARA(pFont);
;;;150 pfi->Flags = GUI_FONTINFO_FLAG_PROP | GUI_FONTINFO_FLAG_AA;
000002 8008 STRH r0,[r1,#0]
;;;151 }
000004 4770 BX lr
;;;152
ENDP
AREA ||i.GUIPROPAA_IsInFont||, CODE, READONLY, ALIGN=1
GUIPROPAA_IsInFont PROC
;;;156 */
;;;157 char GUIPROPAA_IsInFont(const GUI_FONT * pFont, U16 c) {
000000 b510 PUSH {r4,lr}
;;;158 const GUI_FONT_PROP* pProp = GUIPROP_FindChar(pFont->p.pProp, c);
000002 6980 LDR r0,[r0,#0x18]
000004 f7fffffe BL GUIPROP_FindChar
;;;159 return (pProp==NULL) ? 0 : 1;
000008 2800 CMP r0,#0
00000a d000 BEQ |L5.14|
00000c 2001 MOVS r0,#1
|L5.14|
;;;160 }
00000e bd10 POP {r4,pc}
;;;161
ENDP
AREA ||i.GUIPROP_FindChar||, CODE, READONLY, ALIGN=2
GUIPROP_FindChar PROC
;;;94 */
;;;95 static const GUI_FONT_PROP* GUIPROP_FindChar(const GUI_FONT_PROP* pProp, U16P c) {
000000 4806 LDR r0,|L6.28|
;;;96 for (pProp = GUI_Context.pAFont->p.pProp; pProp; pProp=(const GUI_FONT_PROP*) pProp->pNext) {
000002 6980 LDR r0,[r0,#0x18] ; GUI_Context
000004 6980 LDR r0,[r0,#0x18]
000006 e006 B |L6.22|
|L6.8|
;;;97 if ((c>=pProp->First) && (c<=pProp->Last))
000008 8802 LDRH r2,[r0,#0]
00000a 428a CMP r2,r1
00000c d802 BHI |L6.20|
00000e 8842 LDRH r2,[r0,#2]
000010 428a CMP r2,r1
000012 d202 BCS |L6.26|
|L6.20|
000014 6880 LDR r0,[r0,#8] ;96
|L6.22|
000016 2800 CMP r0,#0 ;96
000018 d1f6 BNE |L6.8|
|L6.26|
;;;98 break;
;;;99 }
;;;100 return pProp;
;;;101 }
00001a 4770 BX lr
;;;102
ENDP
|L6.28|
DCD GUI_Context
AREA ||.constdata||, DATA, READONLY, ALIGN=0
Bit2Mask0
000000 80200802 DCB 0x80,0x20,0x08,0x02
Bit2Mask1
000004 40100401 DCB 0x40,0x10,0x04,0x01
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -