📄 guicharline.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guicharline.o --depend=.\Obj\guicharline.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\Core\GUICharLine.c]
THUMB
AREA ||i.GUI__DispLine||, CODE, READONLY, ALIGN=2
GUI__DispLine PROC
;;;112 */
;;;113 void GUI__DispLine(const char GUI_UNI_PTR *s, int MaxNumChars, const GUI_RECT* pr) {
000000 b57c PUSH {r2-r6,lr}
000002 4605 MOV r5,r0
;;;114 GUI_RECT r;
;;;115 #if GUI_SUPPORT_ROTATION
;;;116 if (GUI_pLCD_APIList) {
000004 4824 LDR r0,|L1.152|
000006 460e MOV r6,r1 ;113
000008 6800 LDR r0,[r0,#0] ; GUI_pLCD_APIList
00000a 4611 MOV r1,r2 ;113
00000c b168 CBZ r0,|L1.42|
;;;117 #if GUI_WINSUPPORT
;;;118 WM_ITERATE_START(NULL) {
00000e 2000 MOVS r0,#0
000010 f7fffffe BL WM__InitIVRSearch
000014 e006 B |L1.36|
|L1.22|
;;;119 #endif
;;;120 /* Do the actual drawing via routine call. */
;;;121 _DispLine(s, MaxNumChars, &r);
000016 466a MOV r2,sp
000018 4631 MOV r1,r6
00001a 4628 MOV r0,r5
00001c f7fffffe BL _DispLine
;;;122 #if GUI_WINSUPPORT
;;;123 } WM_ITERATE_END();
000020 f7fffffe BL WM__GetNextIVR
|L1.36|
000024 2800 CMP r0,#0
000026 d1f6 BNE |L1.22|
;;;124 #endif
;;;125 } else
;;;126 #endif
;;;127 {
;;;128 r = *pr;
;;;129 #if GUI_WINSUPPORT
;;;130 WM_ADDORG(r.x0, r.y0);
;;;131 WM_ADDORG(r.x1, r.y1);
;;;132 WM_ITERATE_START(&r) {
;;;133 #endif
;;;134 GUI_Context.DispPosX = r.x0;
;;;135 GUI_Context.DispPosY = r.y0;
;;;136 /* Do the actual drawing via routine call. */
;;;137 _DispLine(s, MaxNumChars, &r);
;;;138 #if GUI_WINSUPPORT
;;;139 } WM_ITERATE_END();
;;;140 WM_SUBORG(GUI_Context.DispPosX, GUI_Context.DispPosY);
;;;141 #endif
;;;142 }
;;;143 }
000028 bd7c POP {r2-r6,pc}
|L1.42|
00002a 2208 MOVS r2,#8 ;128
00002c 4668 MOV r0,sp ;128
00002e f7fffffe BL __aeabi_memcpy
000032 4c1a LDR r4,|L1.156|
000034 f8bd0000 LDRH r0,[sp,#0] ;130
000038 6c21 LDR r1,[r4,#0x40] ;130 ; GUI_Context
00003a 4408 ADD r0,r0,r1 ;130
00003c f8ad0000 STRH r0,[sp,#0] ;130
000040 f8bd2002 LDRH r2,[sp,#2] ;130
000044 6c60 LDR r0,[r4,#0x44] ;130 ; GUI_Context
000046 4402 ADD r2,r2,r0 ;130
000048 f8ad2002 STRH r2,[sp,#2] ;130
00004c f8bd2004 LDRH r2,[sp,#4] ;131
000050 4411 ADD r1,r1,r2 ;131
000052 f8ad1004 STRH r1,[sp,#4] ;131
000056 f8bd1006 LDRH r1,[sp,#6] ;131
00005a 4408 ADD r0,r0,r1 ;131
00005c f8ad0006 STRH r0,[sp,#6] ;131
000060 4668 MOV r0,sp ;132
000062 f7fffffe BL WM__InitIVRSearch
000066 e00c B |L1.130|
|L1.104|
000068 f8bd0000 LDRH r0,[sp,#0] ;134
00006c 8460 STRH r0,[r4,#0x22] ;134
00006e f8bd0002 LDRH r0,[sp,#2] ;135
000072 84a0 STRH r0,[r4,#0x24] ;135
000074 466a MOV r2,sp ;137
000076 4631 MOV r1,r6 ;137
000078 4628 MOV r0,r5 ;137
00007a f7fffffe BL _DispLine
00007e f7fffffe BL WM__GetNextIVR
|L1.130|
000082 2800 CMP r0,#0 ;139
000084 d1f0 BNE |L1.104|
000086 8c60 LDRH r0,[r4,#0x22] ;140 ; GUI_Context
000088 6c21 LDR r1,[r4,#0x40] ;140 ; GUI_Context
00008a 1a40 SUBS r0,r0,r1 ;140
00008c 8460 STRH r0,[r4,#0x22] ;140
00008e 8ca0 LDRH r0,[r4,#0x24] ;140 ; GUI_Context
000090 6c61 LDR r1,[r4,#0x44] ;140 ; GUI_Context
000092 1a40 SUBS r0,r0,r1 ;140
000094 84a0 STRH r0,[r4,#0x24] ;140
000096 bd7c POP {r2-r6,pc}
;;;144
ENDP
|L1.152|
DCD GUI_pLCD_APIList
|L1.156|
DCD GUI_Context
AREA ||i.GUI__GetLineDistX||, CODE, READONLY, ALIGN=2
GUI__GetLineDistX PROC
;;;91 */
;;;92 int GUI__GetLineDistX(const char GUI_UNI_PTR *s, int MaxNumChars) {
000000 b573 PUSH {r0,r1,r4-r6,lr}
;;;93 int Dist = 0;
;;;94 if (s) {
000002 9800 LDR r0,[sp,#0]
000004 460c MOV r4,r1 ;92
000006 2500 MOVS r5,#0 ;93
000008 b178 CBZ r0,|L2.42|
;;;95 U16 Char;
;;;96 #if GUI_COMPILER_SUPPORTS_FP
;;;97 if (GUI_Context.pAFont->pafEncode) {
00000a 4909 LDR r1,|L2.48|
00000c 6989 LDR r1,[r1,#0x18] ; GUI_Context
00000e 6909 LDR r1,[r1,#0x10]
000010 b149 CBZ r1,|L2.38|
;;;98 return GUI_Context.pAFont->pafEncode->pfGetLineDistX(s, MaxNumChars);
000012 680a LDR r2,[r1,#0]
000014 4621 MOV r1,r4
000016 4790 BLX r2
;;;99 }
;;;100 #endif
;;;101 while (--MaxNumChars >= 0) {
;;;102 Char = GUI_UC__GetCharCodeInc(&s);
;;;103 Dist += GUI_GetCharDistX(Char);
;;;104 }
;;;105 }
;;;106 return Dist;
;;;107 }
000018 bd7c POP {r2-r6,pc}
|L2.26|
00001a 4668 MOV r0,sp ;102
00001c f7fffffe BL GUI_UC__GetCharCodeInc
000020 f7fffffe BL GUI_GetCharDistX
000024 4405 ADD r5,r5,r0 ;103
|L2.38|
000026 1e64 SUBS r4,r4,#1 ;101
000028 d5f7 BPL |L2.26|
|L2.42|
00002a 4628 MOV r0,r5 ;106
00002c bd7c POP {r2-r6,pc}
;;;108
ENDP
00002e 0000 DCW 0x0000
|L2.48|
DCD GUI_Context
AREA ||i.GUI__GetLineNumChars||, CODE, READONLY, ALIGN=2
GUI__GetLineNumChars PROC
;;;67 */
;;;68 int GUI__GetLineNumChars(const char GUI_UNI_PTR *s, int MaxNumChars) {
000000 b573 PUSH {r0,r1,r4-r6,lr}
;;;69 int NumChars = 0;
;;;70 if (s) {
000002 9800 LDR r0,[sp,#0]
000004 460d MOV r5,r1 ;68
000006 2400 MOVS r4,#0 ;69
000008 b180 CBZ r0,|L3.44|
;;;71 #if GUI_COMPILER_SUPPORTS_FP
;;;72 if (GUI_Context.pAFont->pafEncode) {
00000a 4909 LDR r1,|L3.48|
00000c 6989 LDR r1,[r1,#0x18] ; GUI_Context
00000e 6909 LDR r1,[r1,#0x10]
000010 b151 CBZ r1,|L3.40|
;;;73 return GUI_Context.pAFont->pafEncode->pfGetLineLen(s, MaxNumChars);
000012 684a LDR r2,[r1,#4]
000014 4629 MOV r1,r5
000016 4790 BLX r2
;;;74 }
;;;75 #endif
;;;76 for (; NumChars < MaxNumChars; NumChars++) {
;;;77 U16 Data = GUI_UC__GetCharCodeInc(&s);
;;;78 if ((Data == 0) || (Data == '\n')) {
;;;79 break;
;;;80 }
;;;81 }
;;;82 }
;;;83 return NumChars;
;;;84 }
000018 bd7c POP {r2-r6,pc}
|L3.26|
00001a 4668 MOV r0,sp ;77
00001c f7fffffe BL GUI_UC__GetCharCodeInc
000020 b120 CBZ r0,|L3.44|
000022 280a CMP r0,#0xa ;78
000024 d002 BEQ |L3.44|
000026 1c64 ADDS r4,r4,#1 ;76
|L3.40|
000028 42ac CMP r4,r5 ;76
00002a dbf6 BLT |L3.26|
|L3.44|
00002c 4620 MOV r0,r4 ;83
00002e bd7c POP {r2-r6,pc}
;;;85
ENDP
|L3.48|
DCD GUI_Context
AREA ||i._DispLine||, CODE, READONLY, ALIGN=2
_DispLine PROC
;;;33 */
;;;34 static void _DispLine(const char GUI_UNI_PTR *s, int MaxNumChars, const GUI_RECT *pRect) {
000000 b5f7 PUSH {r0-r2,r4-r7,lr}
;;;35 /* Check if we have anything to do at all ... */
;;;36 if (GUI_Context.pClipRect_HL) {
000002 4d11 LDR r5,|L4.72|
000004 460c MOV r4,r1 ;34
000006 6928 LDR r0,[r5,#0x10] ; GUI_Context
000008 4611 MOV r1,r2 ;34
00000a b118 CBZ r0,|L4.20|
;;;37 if (GUI_RectsIntersect(GUI_Context.pClipRect_HL, pRect) == 0)
00000c f7fffffe BL GUI_RectsIntersect
000010 2800 CMP r0,#0
000012 d006 BEQ |L4.34|
|L4.20|
;;;38 return;
;;;39 }
;;;40 #if GUI_COMPILER_SUPPORTS_FP
;;;41 if (GUI_Context.pAFont->pafEncode) {
000014 69a8 LDR r0,[r5,#0x18] ; GUI_Context
000016 6900 LDR r0,[r0,#0x10]
000018 b120 CBZ r0,|L4.36|
;;;42 GUI_Context.pAFont->pafEncode->pfDispLine(s, MaxNumChars);
00001a 6882 LDR r2,[r0,#8]
00001c 4621 MOV r1,r4
00001e 9800 LDR r0,[sp,#0]
000020 4790 BLX r2
|L4.34|
;;;43 } else {
;;;44 #else
;;;45 {
;;;46 #endif
;;;47 U16 Char;
;;;48 while (--MaxNumChars >= 0) {
;;;49 Char = GUI_UC__GetCharCodeInc(&s);
;;;50 GUI_Context.pAFont->pfDispChar(Char);
;;;51 if (GUI_pfDispCharStyle) {
;;;52 GUI_pfDispCharStyle(Char);
;;;53 }
;;;54 }
;;;55 }
;;;56 }
000022 bdfe POP {r1-r7,pc}
|L4.36|
000024 4e09 LDR r6,|L4.76|
000026 e00b B |L4.64|
|L4.40|
000028 4668 MOV r0,sp ;49
00002a f7fffffe BL GUI_UC__GetCharCodeInc
00002e 4607 MOV r7,r0 ;49
000030 69a8 LDR r0,[r5,#0x18] ;50 ; GUI_Context
000032 6801 LDR r1,[r0,#0] ;50
000034 4638 MOV r0,r7 ;50
000036 4788 BLX r1 ;50
000038 6831 LDR r1,[r6,#0] ;51 ; GUI_pfDispCharStyle
00003a b109 CBZ r1,|L4.64|
00003c 4638 MOV r0,r7 ;52
00003e 4788 BLX r1 ;52
|L4.64|
000040 1e64 SUBS r4,r4,#1 ;48
000042 d5f1 BPL |L4.40|
000044 bdfe POP {r1-r7,pc}
;;;57
ENDP
000046 0000 DCW 0x0000
|L4.72|
DCD GUI_Context
|L4.76|
DCD GUI_pfDispCharStyle
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -