📄 guipolye.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 + -