⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guicharline.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 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 + -