📄 gui_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_dispstring.o --depend=.\Obj\gui_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_DispString.c]
THUMB
AREA ||i.GUI_DispString||, CODE, READONLY, ALIGN=2
GUI_DispString PROC
;;;33 */
;;;34 void GUI_DispString(const char GUI_UNI_PTR *s) {
000000 e92d47fc PUSH {r2-r10,lr}
000004 0005 MOVS r5,r0
;;;35 int xAdjust, yAdjust, xOrg;
;;;36 int FontSizeY;
;;;37 if (!s)
000006 d06c BEQ |L1.226|
;;;38 return;
;;;39 GUI_LOCK();
;;;40 FontSizeY = GUI_GetFontDistY();
000008 f7fffffe BL GUI_GetFontDistY
;;;41 xOrg = GUI_Context.DispPosX;
00000c 4e36 LDR r6,|L1.232|
00000e 4607 MOV r7,r0 ;40
000010 f9b69022 LDRSH r9,[r6,#0x22] ; GUI_Context
;;;42 /* Adjust vertical position */
;;;43 yAdjust = GUI_GetYAdjust();
000014 f7fffffe BL GUI_GetYAdjust
;;;44 GUI_Context.DispPosY -= yAdjust;
000018 8cb1 LDRH r1,[r6,#0x24] ; GUI_Context
00001a 4680 MOV r8,r0 ;43
00001c 1a08 SUBS r0,r1,r0
00001e 84b0 STRH r0,[r6,#0x24]
;;;45 for (; *s; s++) {
000020 e054 B |L1.204|
;;;46 GUI_RECT r;
;;;47 int LineNumChars = GUI__GetLineNumChars(s, 0x7fff);
000022 bf00 NOP
|L1.36|
000024 f64771ff MOV r1,#0x7fff
000028 4628 MOV r0,r5
00002a f7fffffe BL GUI__GetLineNumChars
00002e 4682 MOV r10,r0
;;;48 int xLineSize = GUI__GetLineDistX(s, LineNumChars);
000030 4601 MOV r1,r0
000032 4628 MOV r0,r5
000034 f7fffffe BL GUI__GetLineDistX
000038 4604 MOV r4,r0
;;;49 /* Check if x-position needs to be changed due to h-alignment */
;;;50 switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) {
00003a 8db0 LDRH r0,[r6,#0x2c] ; GUI_Context
00003c f0000003 AND r0,r0,#3
000040 2801 CMP r0,#1
000042 d005 BEQ |L1.80|
000044 2802 CMP r0,#2
000046 d105 BNE |L1.84|
;;;51 case GUI_TA_CENTER: xAdjust = xLineSize / 2; break;
000048 eb0470d4 ADD r0,r4,r4,LSR #31
00004c 1040 ASRS r0,r0,#1
00004e e002 B |L1.86|
|L1.80|
;;;52 case GUI_TA_RIGHT: xAdjust = xLineSize; break;
000050 4620 MOV r0,r4
000052 e000 B |L1.86|
|L1.84|
;;;53 default: xAdjust = 0;
000054 2000 MOVS r0,#0
|L1.86|
;;;54 }
;;;55 r.x0 = GUI_Context.DispPosX -= xAdjust;
000056 8c71 LDRH r1,[r6,#0x22] ; GUI_Context
;;;56 r.x1 = r.x0 + xLineSize - 1;
;;;57 r.y0 = GUI_Context.DispPosY;
;;;58 r.y1 = r.y0 + FontSizeY - 1;
;;;59 GUI__DispLine(s, LineNumChars, &r);
000058 466a MOV r2,sp
00005a 1a08 SUBS r0,r1,r0 ;55
00005c 8470 STRH r0,[r6,#0x22] ;55
00005e f8ad0000 STRH r0,[sp,#0] ;55
000062 1e61 SUBS r1,r4,#1 ;56
000064 4408 ADD r0,r0,r1 ;56
000066 f8ad0004 STRH r0,[sp,#4] ;56
00006a 8cb0 LDRH r0,[r6,#0x24] ;57 ; GUI_Context
00006c f8ad0002 STRH r0,[sp,#2] ;57
000070 1e79 SUBS r1,r7,#1 ;58
000072 4408 ADD r0,r0,r1 ;58
000074 f8ad0006 STRH r0,[sp,#6] ;58
000078 4651 MOV r1,r10
00007a 4628 MOV r0,r5
00007c f7fffffe BL GUI__DispLine
;;;60 GUI_Context.DispPosY = r.y0;
000080 f8bd0002 LDRH r0,[sp,#2]
000084 84b0 STRH r0,[r6,#0x24]
;;;61 s += GUI_UC__NumChars2NumBytes(s, LineNumChars);
000086 4651 MOV r1,r10
000088 4628 MOV r0,r5
00008a f7fffffe BL GUI_UC__NumChars2NumBytes
00008e 4405 ADD r5,r5,r0
;;;62 if ((*s == '\n') || (*s == '\r')) {
000090 7828 LDRB r0,[r5,#0]
000092 280a CMP r0,#0xa
000094 d001 BEQ |L1.154|
000096 280d CMP r0,#0xd
000098 d111 BNE |L1.190|
|L1.154|
;;;63 switch (GUI_Context.TextAlign & GUI_TA_HORIZONTAL) {
00009a 8db0 LDRH r0,[r6,#0x2c] ; GUI_Context
00009c f0000003 AND r0,r0,#3
0000a0 2801 CMP r0,#1
0000a2 d001 BEQ |L1.168|
0000a4 2802 CMP r0,#2
0000a6 d108 BNE |L1.186|
|L1.168|
;;;64 case GUI_TA_CENTER:
;;;65 case GUI_TA_RIGHT:
;;;66 GUI_Context.DispPosX = xOrg;
0000a8 4648 MOV r0,r9
|L1.170|
0000aa 8470 STRH r0,[r6,#0x22]
;;;67 break;
;;;68 default:
;;;69 GUI_Context.DispPosX = GUI_Context.LBorder;
;;;70 break;
;;;71 }
;;;72 if (*s == '\n')
0000ac 7828 LDRB r0,[r5,#0]
0000ae 280a CMP r0,#0xa
0000b0 d109 BNE |L1.198|
;;;73 GUI_Context.DispPosY += FontSizeY;
0000b2 8cb0 LDRH r0,[r6,#0x24] ; GUI_Context
0000b4 4438 ADD r0,r0,r7
0000b6 84b0 STRH r0,[r6,#0x24]
0000b8 e005 B |L1.198|
|L1.186|
0000ba 8c30 LDRH r0,[r6,#0x20] ;69 ; GUI_Context
0000bc e7f5 B |L1.170|
|L1.190|
;;;74 } else {
;;;75 GUI_Context.DispPosX = r.x0 + xLineSize;
0000be f8bd0000 LDRH r0,[sp,#0]
0000c2 4420 ADD r0,r0,r4
0000c4 8470 STRH r0,[r6,#0x22]
|L1.198|
;;;76 }
;;;77 if (*s == 0) /* end of string (last line) reached ? */
0000c6 7828 LDRB r0,[r5,#0]
0000c8 b118 CBZ r0,|L1.210|
0000ca 1c6d ADDS r5,r5,#1 ;45
|L1.204|
0000cc 7828 LDRB r0,[r5,#0] ;45
0000ce 2800 CMP r0,#0 ;45
0000d0 d1a8 BNE |L1.36|
|L1.210|
;;;78 break;
;;;79 }
;;;80 GUI_Context.DispPosY += yAdjust;
0000d2 8cb1 LDRH r1,[r6,#0x24] ; GUI_Context
0000d4 eb010008 ADD r0,r1,r8
0000d8 84b0 STRH r0,[r6,#0x24]
;;;81 GUI_Context.TextAlign &= ~GUI_TA_HORIZONTAL;
0000da 8db0 LDRH r0,[r6,#0x2c] ; GUI_Context
0000dc f0200003 BIC r0,r0,#3
0000e0 85b0 STRH r0,[r6,#0x2c]
|L1.226|
;;;82 GUI_UNLOCK();
;;;83 }
0000e2 e8bd87fc POP {r2-r10,pc}
;;;84
ENDP
0000e6 0000 DCW 0x0000
|L1.232|
DCD GUI_Context
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -