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

📄 guipolye.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\guipolye.o --depend=.\Obj\guipolye.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\GUIPolyE.c]
                          THUMB

                          AREA ||i.GUI_EnlargePolygon||, CODE, READONLY, ALIGN=1

                  GUI_EnlargePolygon PROC
;;;126    
;;;127    void GUI_EnlargePolygon(GUI_POINT* pDest, const GUI_POINT* pSrc, int NumPoints, int Len) {
000000  e92d47ff          PUSH     {r0-r10,lr}
000004  4606              MOV      r6,r0
000006  460f              MOV      r7,r1
000008  4691              MOV      r9,r2
00000a  469a              MOV      r10,r3
;;;128      int j;
;;;129      /* Calc destination points */
;;;130      for (j=0; j<NumPoints; j++) {
00000c  2400              MOVS     r4,#0
00000e  e03d              B        |L1.140|
                  |L1.16|
;;;131        int x, y;
;;;132        tfPoint aVect[2];
;;;133        /* Get the vectors */
;;;134        _GetVect(&aVect[0], pSrc, NumPoints, j);
000010  4623              MOV      r3,r4
000012  464a              MOV      r2,r9
000014  4639              MOV      r1,r7
000016  4668              MOV      r0,sp
000018  f7fffffe          BL       _GetVect
;;;135        _GetVect(&aVect[1], pSrc, NumPoints, j+1);
00001c  a802              ADD      r0,sp,#8
00001e  1c63              ADDS     r3,r4,#1
000020  464a              MOV      r2,r9
000022  4639              MOV      r1,r7
000024  4605              MOV      r5,r0
000026  f7fffffe          BL       _GetVect
;;;136        /* Normalize the vectors and add vectors */
;;;137        _Normalize(&aVect[0]);
00002a  4668              MOV      r0,sp
00002c  f7fffffe          BL       _Normalize
000030  4628              MOV      r0,r5
;;;138        _Normalize(&aVect[1]);
000032  f7fffffe          BL       _Normalize
;;;139        aVect[0].x += aVect[1].x;
000036  9902              LDR      r1,[sp,#8]
000038  9800              LDR      r0,[sp,#0]
00003a  f7fffffe          BL       __aeabi_fadd
;;;140        aVect[0].y += aVect[1].y;
00003e  9000              STR      r0,[sp,#0]
000040  9903              LDR      r1,[sp,#0xc]
000042  9801              LDR      r0,[sp,#4]
000044  f7fffffe          BL       __aeabi_fadd
;;;141        /* Resulting vector needs to be normalized again */
;;;142        _ReverseLen(&aVect[0]);
000048  9001              STR      r0,[sp,#4]
00004a  4668              MOV      r0,sp
00004c  f7fffffe          BL       _ReverseLen
;;;143        x =  _fround(aVect[0].y * Len);
000050  4650              MOV      r0,r10
000052  f7fffffe          BL       __aeabi_i2f
000056  4680              MOV      r8,r0
000058  9901              LDR      r1,[sp,#4]
00005a  f7fffffe          BL       __aeabi_fmul
00005e  f7fffffe          BL       _fround
000062  4605              MOV      r5,r0
;;;144        y = -_fround(aVect[0].x * Len);
000064  4640              MOV      r0,r8
000066  9900              LDR      r1,[sp,#0]
000068  f7fffffe          BL       __aeabi_fmul
00006c  f7fffffe          BL       _fround
;;;145        /* Store destination */
;;;146        (pDest+j)->x = (pSrc+j)->x + x;
000070  f8372024          LDRH     r2,[r7,r4,LSL #2]
000074  4241              RSBS     r1,r0,#0              ;144
000076  1950              ADDS     r0,r2,r5
000078  f8260024          STRH     r0,[r6,r4,LSL #2]
;;;147        (pDest+j)->y = (pSrc+j)->y + y;
00007c  eb070084          ADD      r0,r7,r4,LSL #2
000080  8840              LDRH     r0,[r0,#2]
000082  4408              ADD      r0,r0,r1
000084  eb060184          ADD      r1,r6,r4,LSL #2
000088  8048              STRH     r0,[r1,#2]
00008a  1c64              ADDS     r4,r4,#1              ;130
                  |L1.140|
00008c  454c              CMP      r4,r9                 ;130
00008e  dbbf              BLT      |L1.16|
;;;148      }
;;;149    }
000090  e8bd87ff          POP      {r0-r10,pc}
;;;150    #endif
                          ENDP


                          AREA ||i._GetVect||, CODE, READONLY, ALIGN=1

                  _GetVect PROC
;;;82     */
;;;83     static void _GetVect(tfPoint* pfPoint, const GUI_POINT* pSrc, int NumPoints, int Index) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4606              MOV      r6,r0
;;;84       int Off0 = (Index + NumPoints-1) % NumPoints;
000006  1898              ADDS     r0,r3,r2
000008  460c              MOV      r4,r1                 ;83
00000a  1e40              SUBS     r0,r0,#1
00000c  fb90f1f2          SDIV     r1,r0,r2
000010  fb020511          MLS      r5,r2,r1,r0
;;;85       int Off1 = Index % NumPoints;
000014  fb93f0f2          SDIV     r0,r3,r2
000018  fb023710          MLS      r7,r2,r0,r3
;;;86       pfPoint->x = pSrc[Off1].x - pSrc[Off0].x; 
00001c  f9340027          LDRSH    r0,[r4,r7,LSL #2]
000020  f9341025          LDRSH    r1,[r4,r5,LSL #2]
000024  1a40              SUBS     r0,r0,r1
000026  f7fffffe          BL       __aeabi_i2f
;;;87       pfPoint->y = pSrc[Off1].y - pSrc[Off0].y; 
00002a  6030              STR      r0,[r6,#0]
00002c  eb040087          ADD      r0,r4,r7,LSL #2
000030  eb040185          ADD      r1,r4,r5,LSL #2
000034  f9b00002          LDRSH    r0,[r0,#2]
000038  f9b11002          LDRSH    r1,[r1,#2]
00003c  1a40              SUBS     r0,r0,r1
00003e  f7fffffe          BL       __aeabi_i2f
;;;88     }
000042  6070              STR      r0,[r6,#4]
000044  e8bd81f0          POP      {r4-r8,pc}
;;;89     
                          ENDP


                          AREA ||i._Normalize||, CODE, READONLY, ALIGN=1

                  _Normalize PROC
;;;54     */
;;;55     static void _Normalize(tfPoint* pfPoint) {
000000  e92d41f0          PUSH     {r4-r8,lr}
000004  4604              MOV      r4,r0
;;;56       float fx = pfPoint->x;
;;;57       float fy = pfPoint->y;
;;;58       float r = sqrt(fx*fx + fy*fy);
000006  c8c0              LDM      r0!,{r6,r7}
000008  4639              MOV      r1,r7
00000a  4638              MOV      r0,r7
00000c  f7fffffe          BL       __aeabi_fmul
000010  4605              MOV      r5,r0
000012  4631              MOV      r1,r6
000014  4630              MOV      r0,r6
000016  f7fffffe          BL       __aeabi_fmul
00001a  4629              MOV      r1,r5
00001c  f7fffffe          BL       __aeabi_fadd
000020  f7fffffe          BL       __aeabi_f2d
000024  f7fffffe          BL       sqrt
000028  f7fffffe          BL       __aeabi_d2f
00002c  4605              MOV      r5,r0
;;;59       if (r > 0) {
00002e  f5b00f00          CMP      r0,#0x800000
000032  db09              BLT      |L3.72|
;;;60         pfPoint->x = fx/r;
000034  4629              MOV      r1,r5
000036  4630              MOV      r0,r6
000038  f7fffffe          BL       __aeabi_fdiv
;;;61         pfPoint->y = fy/r;
00003c  6020              STR      r0,[r4,#0]
00003e  4629              MOV      r1,r5
000040  4638              MOV      r0,r7
000042  f7fffffe          BL       __aeabi_fdiv
000046  6060              STR      r0,[r4,#4]
                  |L3.72|
;;;62       }
;;;63     }
000048  e8bd81f0          POP      {r4-r8,pc}
;;;64     
                          ENDP


                          AREA ||i._ReverseLen||, CODE, READONLY, ALIGN=1

                  _ReverseLen PROC
;;;68     */
;;;69     static void _ReverseLen(tfPoint* pfPoint) {
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;70       float fx = pfPoint->x;
;;;71       float fy = pfPoint->y;
;;;72       float r = sqrt(fx*fx/2 + fy*fy/2);
000004  e9d08600          LDRD     r8,r6,[r0,#0]
000008  4604              MOV      r4,r0                 ;69
00000a  4631              MOV      r1,r6
00000c  4630              MOV      r0,r6
00000e  f7fffffe          BL       __aeabi_fmul
000012  f04f35ff          MOV      r5,#0xffffffff
000016  4629              MOV      r1,r5
000018  f7fffffe          BL       __ARM_scalbnf
00001c  4607              MOV      r7,r0
00001e  4641              MOV      r1,r8
000020  4640              MOV      r0,r8
000022  f7fffffe          BL       __aeabi_fmul
000026  4629              MOV      r1,r5
000028  f7fffffe          BL       __ARM_scalbnf
00002c  4639              MOV      r1,r7
00002e  f7fffffe          BL       __aeabi_fadd
000032  f7fffffe          BL       __aeabi_f2d
000036  f7fffffe          BL       sqrt
00003a  f7fffffe          BL       __aeabi_d2f
00003e  4605              MOV      r5,r0
;;;73       if (r > 0) {
000040  f5b00f00          CMP      r0,#0x800000
000044  db0f              BLT      |L4.102|
;;;74         pfPoint->x = fx/r/r;
000046  4629              MOV      r1,r5
000048  4640              MOV      r0,r8
00004a  f7fffffe          BL       __aeabi_fdiv
00004e  4629              MOV      r1,r5
000050  f7fffffe          BL       __aeabi_fdiv
;;;75         pfPoint->y = fy/r/r;
000054  6020              STR      r0,[r4,#0]
000056  4629              MOV      r1,r5
000058  4630              MOV      r0,r6
00005a  f7fffffe          BL       __aeabi_fdiv
00005e  4629              MOV      r1,r5
000060  f7fffffe          BL       __aeabi_fdiv
000064  6060              STR      r0,[r4,#4]
                  |L4.102|
;;;76       }
;;;77     }
000066  e8bd81f0          POP      {r4-r8,pc}
;;;78     
                          ENDP


                          AREA ||i._fround||, CODE, READONLY, ALIGN=2

                  _fround PROC
;;;44     */
;;;45     static int _fround(float f) {
000000  b510              PUSH     {r4,lr}
;;;46       if (f>0)
000002  4604              MOV      r4,r0
;;;47         return f+0.5;
000004  f7fffffe          BL       __aeabi_f2d
000008  a206              ADR      r2,|L5.36|
00000a  ca0c              LDM      r2,{r2,r3}
00000c  f5b40f00          CMP      r4,#0x800000          ;46
000010  db02              BLT      |L5.24|
000012  f7fffffe          BL       __aeabi_dadd
000016  e001              B        |L5.28|
                  |L5.24|
;;;48       return f-0.5;
000018  f7fffffe          BL       __aeabi_dsub
                  |L5.28|
00001c  e8bd4010          POP      {r4,lr}
000020  f7ffbffe          B.W      __aeabi_d2iz
;;;49     }
;;;50     
                          ENDP

                  |L5.36|
000024  00000000
000028  3fe00000          DCFD     0x3fe0000000000000 ; 0.5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -