📄 gui_uc_dispstring.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\gui_uc_dispstring.o --depend=.\Obj\gui_uc_dispstring.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\GUI_UC_DispString.c]
THUMB
AREA ||i.GUI_UC_DispString||, CODE, READONLY, ALIGN=2
GUI_UC_DispString PROC
;;;110 */
;;;111 void GUI_UC_DispString(const U16 GUI_UNI_PTR *s) {
000000 e92d5ffc PUSH {r2-r12,lr}
000004 0007 MOVS r7,r0
;;;112 int xAdjust, yAdjust, xOrg;
;;;113 int FontSizeY;
;;;114 if (!s)
000006 d07a BEQ |L1.254|
;;;115 return;
;;;116 GUI_LOCK();
;;;117 FontSizeY = GUI_Context.pAFont->YSize;
000008 4c3e LDR r4,|L1.260|
00000a 69a0 LDR r0,[r4,#0x18] ; GUI_Context
;;;118 xOrg = GUI_Context.DispPosX;
00000c f9b4b022 LDRSH r11,[r4,#0x22] ; GUI_Context
000010 f8909014 LDRB r9,[r0,#0x14] ;117
;;;119 /* Adjust vertical position */
;;;120 yAdjust = GUI_GetYAdjust();
000014 f7fffffe BL GUI_GetYAdjust
;;;121 GUI_Context.DispPosY -= yAdjust;
000018 8ca1 LDRH r1,[r4,#0x24] ; GUI_Context
00001a 4682 MOV r10,r0 ;120
00001c 1a08 SUBS r0,r1,r0
00001e 84a0 STRH r0,[r4,#0x24]
;;;122 for (; *s; s++) {
000020 e061 B |L1.230|
|L1.34|
;;;123 GUI_RECT r;
;;;124 int LineLen= _GetLineLen(s,0x7fff);
000022 003d MOVS r5,r7
000024 f04f0600 MOV r6,#0
000028 d103 BNE |L1.50|
00002a e008 B |L1.62|
|L1.44|
00002c 1c76 ADDS r6,r6,#1
00002e 1cad ADDS r5,r5,#2
000030 e001 B |L1.54|
|L1.50|
000032 f64770ff MOV r0,#0x7fff
|L1.54|
000036 8829 LDRH r1,[r5,#0]
000038 b109 CBZ r1,|L1.62|
00003a 4286 CMP r6,r0
00003c dbf6 BLT |L1.44|
|L1.62|
00003e 46b0 MOV r8,r6
;;;125 int xLineSize = _GetLineDistX(s, LineLen);
000040 003c MOVS r4,r7
000042 f04f0500 MOV r5,#0
000046 d009 BEQ |L1.92|
000048 e004 B |L1.84|
|L1.74|
00004a 1ca4 ADDS r4,r4,#2
00004c 1e76 SUBS r6,r6,#1
00004e f7fffffe BL GUI_GetCharDistX
000052 4405 ADD r5,r5,r0
|L1.84|
000054 8820 LDRH r0,[r4,#0]
000056 b108 CBZ r0,|L1.92|
000058 2e00 CMP r6,#0
00005a daf6 BGE |L1.74|
|L1.92|
;;;126 /* Check if x-position needs to be changed due to h-alignment */
;;;127 switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) {
00005c 4c29 LDR r4,|L1.260|
00005e 8da0 LDRH r0,[r4,#0x2c] ; GUI_Context
000060 f0000003 AND r0,r0,#3
000064 2801 CMP r0,#1
000066 d005 BEQ |L1.116|
000068 2802 CMP r0,#2
00006a d105 BNE |L1.120|
;;;128 case GUI_TA_CENTER: xAdjust= xLineSize/2; break;
00006c eb0570d5 ADD r0,r5,r5,LSR #31
000070 1040 ASRS r0,r0,#1
000072 e002 B |L1.122|
|L1.116|
;;;129 case GUI_TA_RIGHT: xAdjust= xLineSize; break;
000074 4628 MOV r0,r5
000076 e000 B |L1.122|
|L1.120|
;;;130 default: xAdjust= 0;
000078 2000 MOVS r0,#0
|L1.122|
;;;131 }
;;;132 r.x0 = GUI_Context.DispPosX -= xAdjust;
00007a 8c61 LDRH r1,[r4,#0x22] ; GUI_Context
;;;133 r.x1 = r.x0 + xLineSize-1;
;;;134 r.y0 = GUI_Context.DispPosY;
;;;135 r.y1 = r.y0 + FontSizeY-1;
;;;136 _DispLine(s, LineLen, &r);
00007c 466a MOV r2,sp
00007e 1a08 SUBS r0,r1,r0 ;132
000080 8460 STRH r0,[r4,#0x22] ;132
000082 f8ad0000 STRH r0,[sp,#0] ;132
000086 1e69 SUBS r1,r5,#1 ;133
000088 4408 ADD r0,r0,r1 ;133
00008a f8ad0004 STRH r0,[sp,#4] ;133
00008e 8ca0 LDRH r0,[r4,#0x24] ;134 ; GUI_Context
000090 f8ad0002 STRH r0,[sp,#2] ;134
000094 f1a90101 SUB r1,r9,#1 ;135
000098 4408 ADD r0,r0,r1 ;135
00009a f8ad0006 STRH r0,[sp,#6] ;135
00009e 4641 MOV r1,r8
0000a0 4638 MOV r0,r7
0000a2 f7fffffe BL _DispLine
;;;137 GUI_Context.DispPosY = r.y0;
0000a6 f8bd0002 LDRH r0,[sp,#2]
0000aa 84a0 STRH r0,[r4,#0x24]
;;;138 s += LineLen;
0000ac eb070748 ADD r7,r7,r8,LSL #1
;;;139 if (*s=='\n') {
0000b0 8838 LDRH r0,[r7,#0]
0000b2 280a CMP r0,#0xa
0000b4 d110 BNE |L1.216|
;;;140 switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) {
0000b6 8da0 LDRH r0,[r4,#0x2c] ; GUI_Context
0000b8 f0000003 AND r0,r0,#3
0000bc 2801 CMP r0,#1
0000be d001 BEQ |L1.196|
0000c0 2802 CMP r0,#2
0000c2 d107 BNE |L1.212|
|L1.196|
;;;141 case GUI_TA_CENTER:
;;;142 case GUI_TA_RIGHT:
;;;143 GUI_Context.DispPosX = xOrg;
0000c4 4658 MOV r0,r11
|L1.198|
0000c6 8460 STRH r0,[r4,#0x22]
;;;144 break;
;;;145 default:
;;;146 GUI_Context.DispPosX = GUI_Context.LBorder;
;;;147 break;
;;;148 }
;;;149 GUI_Context.DispPosY += GUI_GetFontDistY();
0000c8 f7fffffe BL GUI_GetFontDistY
0000cc 8ca1 LDRH r1,[r4,#0x24] ; GUI_Context
0000ce 4408 ADD r0,r0,r1
0000d0 84a0 STRH r0,[r4,#0x24]
0000d2 e005 B |L1.224|
|L1.212|
0000d4 8c20 LDRH r0,[r4,#0x20] ;146 ; GUI_Context
0000d6 e7f6 B |L1.198|
|L1.216|
;;;150 } else {
;;;151 GUI_Context.DispPosX = r.x0+xLineSize;
0000d8 f8bd0000 LDRH r0,[sp,#0]
0000dc 4428 ADD r0,r0,r5
0000de 8460 STRH r0,[r4,#0x22]
|L1.224|
;;;152 }
;;;153 if (*s==0) /* end of string (last line) reached ? */
0000e0 8838 LDRH r0,[r7,#0]
0000e2 b118 CBZ r0,|L1.236|
0000e4 1cbf ADDS r7,r7,#2 ;122
|L1.230|
0000e6 8838 LDRH r0,[r7,#0] ;122
0000e8 2800 CMP r0,#0 ;122
0000ea d19a BNE |L1.34|
|L1.236|
;;;154 break;
;;;155 }
;;;156 GUI_Context.DispPosY += yAdjust;
0000ec 4805 LDR r0,|L1.260|
0000ee 8c82 LDRH r2,[r0,#0x24] ; GUI_Context
0000f0 eb02010a ADD r1,r2,r10
0000f4 8481 STRH r1,[r0,#0x24]
;;;157 GUI_Context.TextAlign &= ~GUI_TA_HORIZONTAL;
0000f6 8d81 LDRH r1,[r0,#0x2c] ; GUI_Context
0000f8 f0210103 BIC r1,r1,#3
0000fc 8581 STRH r1,[r0,#0x2c]
|L1.254|
;;;158 GUI_UNLOCK();
;;;159 }
0000fe e8bd9ffc POP {r2-r12,pc}
;;;160
ENDP
000102 0000 DCW 0x0000
|L1.260|
DCD GUI_Context
AREA ||i._DispLine||, CODE, READONLY, ALIGN=2
_DispLine PROC
;;;83 */
;;;84 static void _DispLine(const U16 GUI_UNI_PTR *s, int Len, const GUI_RECT* pr) {
000000 e92d41fc PUSH {r2-r8,lr}
000004 4688 MOV r8,r1
000006 4607 MOV r7,r0
000008 4611 MOV r1,r2
;;;85 GUI_RECT r;
;;;86 r = *pr;
00000a 2208 MOVS r2,#8
00000c 4668 MOV r0,sp
00000e f7fffffe BL __aeabi_memcpy
;;;87 #if GUI_WINSUPPORT
;;;88 WM_ADDORG(r.x0,r.y0);
000012 4e1f LDR r6,|L2.144|
000014 f8bd1000 LDRH r1,[sp,#0]
000018 6c30 LDR r0,[r6,#0x40] ; GUI_Context
00001a 4401 ADD r1,r1,r0
00001c f8ad1000 STRH r1,[sp,#0]
000020 f8bd2002 LDRH r2,[sp,#2]
000024 6c71 LDR r1,[r6,#0x44] ; GUI_Context
000026 440a ADD r2,r2,r1
000028 f8ad2002 STRH r2,[sp,#2]
;;;89 WM_ADDORG(r.x1,r.y1);
00002c f8bd2004 LDRH r2,[sp,#4]
000030 4410 ADD r0,r0,r2
000032 f8ad0004 STRH r0,[sp,#4]
000036 f8bd0006 LDRH r0,[sp,#6]
00003a 4408 ADD r0,r0,r1
00003c f8ad0006 STRH r0,[sp,#6]
;;;90 WM_ITERATE_START(&r) {
000040 4668 MOV r0,sp
000042 f7fffffe BL WM__InitIVRSearch
000046 e017 B |L2.120|
|L2.72|
;;;91 #endif
;;;92 GUI_Context.DispPosX = r.x0;
000048 f8bd0000 LDRH r0,[sp,#0]
00004c 8470 STRH r0,[r6,#0x22]
;;;93 GUI_Context.DispPosY = r.y0;
00004e f8bd0002 LDRH r0,[sp,#2]
000052 84b0 STRH r0,[r6,#0x24]
000054 6930 LDR r0,[r6,#0x10] ; GUI_Context
;;;94 _DispLine_UC(s, Len, &r); /* Do the actual drawing via routine call. */
000056 463c MOV r4,r7
000058 4645 MOV r5,r8
00005a b148 CBZ r0,|L2.112|
00005c 4669 MOV r1,sp
00005e f7fffffe BL GUI_RectsIntersect
000062 b138 CBZ r0,|L2.116|
000064 e004 B |L2.112|
000066 bf00 NOP
|L2.104|
000068 f8340b02 LDRH r0,[r4],#2
00006c f7fffffe BL GL_DispChar
|L2.112|
000070 1e6d SUBS r5,r5,#1
000072 d5f9 BPL |L2.104|
|L2.116|
;;;95 #if GUI_WINSUPPORT
;;;96 } WM_ITERATE_END();
000074 f7fffffe BL WM__GetNextIVR
|L2.120|
000078 2800 CMP r0,#0
00007a d1e5 BNE |L2.72|
;;;97 WM_SUBORG(GUI_Context.DispPosX, GUI_Context.DispPosY);
00007c 8c70 LDRH r0,[r6,#0x22] ; GUI_Context
00007e 6c31 LDR r1,[r6,#0x40] ; GUI_Context
000080 1a40 SUBS r0,r0,r1
000082 8470 STRH r0,[r6,#0x22]
000084 8cb0 LDRH r0,[r6,#0x24] ; GUI_Context
000086 6c71 LDR r1,[r6,#0x44] ; GUI_Context
000088 1a40 SUBS r0,r0,r1
00008a 84b0 STRH r0,[r6,#0x24]
;;;98 #endif
;;;99 }
00008c e8bd81fc POP {r2-r8,pc}
;;;100
ENDP
|L2.144|
DCD GUI_Context
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -