📄 guicirc.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guicirc.o --depend=.\Obj\guicirc.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\GUICirc.c]
THUMB
AREA ||i.Draw8Point||, CODE, READONLY, ALIGN=2
Draw8Point PROC
;;;46 */
;;;47 static void Draw8Point(int x0,int y0, int xoff, int yoff) {
000000 e92d5ffc PUSH {r2-r12,lr}
000004 4605 MOV r5,r0
;;;48 LCD_HL_DrawPixel(x0+xoff,y0+yoff);
000006 4410 ADD r0,r0,r2
000008 f8df808c LDR r8,|L1.152|
00000c 9001 STR r0,[sp,#4]
00000e f8d80058 LDR r0,[r8,#0x58] ; GUI_Context
000012 4617 MOV r7,r2 ;47
000014 460e MOV r6,r1 ;47
000016 eb010903 ADD r9,r1,r3
00001a 6842 LDR r2,[r0,#4]
00001c 461c MOV r4,r3 ;47
00001e 4649 MOV r1,r9
000020 9801 LDR r0,[sp,#4]
000022 4790 BLX r2
;;;49 LCD_HL_DrawPixel(x0-xoff,y0+yoff);
000024 1be8 SUBS r0,r5,r7
000026 9000 STR r0,[sp,#0]
000028 f8d80058 LDR r0,[r8,#0x58] ; GUI_Context
00002c 4649 MOV r1,r9
00002e 6842 LDR r2,[r0,#4]
000030 9800 LDR r0,[sp,#0]
000032 4790 BLX r2
;;;50 LCD_HL_DrawPixel(x0+yoff,y0+xoff);
000034 f8d80058 LDR r0,[r8,#0x58] ; GUI_Context
000038 eb060b07 ADD r11,r6,r7
00003c eb050904 ADD r9,r5,r4
000040 6842 LDR r2,[r0,#4]
000042 4659 MOV r1,r11
000044 4648 MOV r0,r9
000046 4790 BLX r2
;;;51 LCD_HL_DrawPixel(x0+yoff,y0-xoff);
000048 f8d80058 LDR r0,[r8,#0x58] ; GUI_Context
00004c eba60a07 SUB r10,r6,r7
000050 6842 LDR r2,[r0,#4]
000052 4651 MOV r1,r10
000054 4648 MOV r0,r9
000056 4790 BLX r2
;;;52 if (yoff) {
000058 2c00 CMP r4,#0
00005a d01a BEQ |L1.146|
;;;53 LCD_HL_DrawPixel(x0+xoff,y0-yoff);
00005c f8d80058 LDR r0,[r8,#0x58] ; GUI_Context
000060 1b37 SUBS r7,r6,r4
000062 6842 LDR r2,[r0,#4]
000064 4646 MOV r6,r8
000066 4639 MOV r1,r7
000068 9801 LDR r0,[sp,#4]
00006a 4790 BLX r2
;;;54 LCD_HL_DrawPixel(x0-xoff,y0-yoff);
00006c 6db0 LDR r0,[r6,#0x58] ; GUI_Context
00006e 4639 MOV r1,r7
000070 6842 LDR r2,[r0,#4]
000072 9800 LDR r0,[sp,#0]
000074 4790 BLX r2
;;;55 LCD_HL_DrawPixel(x0-yoff,y0+xoff);
000076 6db0 LDR r0,[r6,#0x58] ; GUI_Context
000078 1b2c SUBS r4,r5,r4
00007a 6842 LDR r2,[r0,#4]
00007c 4659 MOV r1,r11
00007e 4620 MOV r0,r4
000080 4790 BLX r2
;;;56 LCD_HL_DrawPixel(x0-yoff,y0-xoff);
000082 6db0 LDR r0,[r6,#0x58] ; GUI_Context
000084 4651 MOV r1,r10
000086 6842 LDR r2,[r0,#4]
000088 4620 MOV r0,r4
00008a b002 ADD sp,sp,#8
00008c e8bd5ff0 POP {r4-r12,lr}
000090 4710 BX r2
|L1.146|
;;;57 }
;;;58 }
000092 e8bd9ffc POP {r2-r12,pc}
;;;59
ENDP
000096 0000 DCW 0x0000
|L1.152|
DCD GUI_Context
AREA ||i.GL_DrawCircle||, CODE, READONLY, ALIGN=1
GL_DrawCircle PROC
;;;69 */
;;;70 void GL_DrawCircle(int x0, int y0, int r) {
000000 e92d47f0 PUSH {r4-r10,lr}
000004 4680 MOV r8,r0
000006 4689 MOV r9,r1
;;;71 I32 i;
;;;72 int imax = ((I32)((I32)r*707))/1000+1;
000008 f24020c3 MOV r0,#0x2c3
00000c 4350 MULS r0,r2,r0
00000e f44f717a MOV r1,#0x3e8
000012 fb90f6f1 SDIV r6,r0,r1
;;;73 I32 sqmax = (I32)r*(I32)r+(I32)r/2;
000016 fb02f002 MUL r0,r2,r2
00001a eb0271d2 ADD r1,r2,r2,LSR #31
00001e eb000761 ADD r7,r0,r1,ASR #1
000022 1c76 ADDS r6,r6,#1 ;72
;;;74 I32 y=r;
000024 4614 MOV r4,r2
;;;75 Draw8Point(x0,y0,r,0);
000026 2300 MOVS r3,#0
000028 4649 MOV r1,r9
00002a 4640 MOV r0,r8
00002c f7fffffe BL Draw8Point
;;;76 for (i=1; i<= imax; i++) {
000030 2501 MOVS r5,#1
000032 e013 B |L2.92|
|L2.52|
;;;77 if ((i*i+y*y) >sqmax) {
000034 fb05f005 MUL r0,r5,r5
000038 fb040004 MLA r0,r4,r4,r0
00003c 42b8 CMP r0,r7
00003e dd06 BLE |L2.78|
;;;78 Draw8Point(x0,y0,i,y);
000040 4623 MOV r3,r4
000042 462a MOV r2,r5
000044 4649 MOV r1,r9
000046 4640 MOV r0,r8
000048 f7fffffe BL Draw8Point
;;;79 y--;
00004c 1e64 SUBS r4,r4,#1
|L2.78|
;;;80 }
;;;81 Draw8Point(x0,y0,i,y);
00004e 4623 MOV r3,r4
000050 462a MOV r2,r5
000052 4649 MOV r1,r9
000054 4640 MOV r0,r8
000056 f7fffffe BL Draw8Point
00005a 1c6d ADDS r5,r5,#1 ;76
|L2.92|
00005c 42b5 CMP r5,r6 ;76
00005e dde9 BLE |L2.52|
;;;82 }
;;;83 }
000060 e8bd87f0 POP {r4-r10,pc}
;;;84
ENDP
AREA ||i.GL_DrawEllipse||, CODE, READONLY, ALIGN=1
GL_DrawEllipse PROC
;;;218 */
;;;219 void GL_DrawEllipse(int x0, int y0, int rx, int ry) {
000000 e92d4fff PUSH {r0-r11,lr}
000004 b083 SUB sp,sp,#0xc
;;;220 I32 OutConst, Sum, SumY;
;;;221 int x,y;
;;;222 int xOld;
;;;223 U32 _rx = rx;
;;;224 U32 _ry = ry;
;;;225 OutConst = _rx*_rx*_ry*_ry /* Constant as explaint above */
000006 fb02f102 MUL r1,r2,r2
;;;226 +(_rx*_rx*_ry>>1); /* To compensate for rounding */
;;;227 xOld = x = rx;
;;;228 for (y=0; y<=ry; y++) {
00000a 2500 MOVS r5,#0
00000c 9102 STR r1,[sp,#8] ;225
00000e 4606 MOV r6,r0 ;219
000010 4359 MULS r1,r3,r1 ;225
000012 fb01f003 MUL r0,r1,r3 ;225
000016 eb000051 ADD r0,r0,r1,LSR #1 ;225
00001a 4614 MOV r4,r2 ;219
00001c 469a MOV r10,r3 ;219
00001e 4691 MOV r9,r2 ;227
000020 9000 STR r0,[sp,#0]
000022 e03c B |L3.158|
|L3.36|
;;;229 if (y==ry) {
000024 d101 BNE |L3.42|
;;;230 x=0;
000026 2400 MOVS r4,#0
000028 e010 B |L3.76|
|L3.42|
;;;231 } else {
;;;232 SumY =((I32)(rx*rx))*((I32)(y*y)); /* Does not change in loop */
00002a 9902 LDR r1,[sp,#8]
00002c fb05f005 MUL r0,r5,r5
000030 4341 MULS r1,r0,r1
;;;233 while (Sum = SumY + ((I32)(ry*ry))*((I32)(x*x)),
000032 fb0af20a MUL r2,r10,r10
;;;234 (x>0) && (Sum>OutConst)) x--;
000036 e000 B |L3.58|
|L3.56|
000038 1e64 SUBS r4,r4,#1
|L3.58|
00003a fb04f004 MUL r0,r4,r4 ;233
00003e fb021000 MLA r0,r2,r0,r1 ;233
000042 2c00 CMP r4,#0 ;233
000044 dd02 BLE |L3.76|
000046 9b00 LDR r3,[sp,#0]
000048 4298 CMP r0,r3
00004a dcf5 BGT |L3.56|
|L3.76|
;;;235 }
;;;236 /* Since we draw lines, we can not draw on the first
;;;237 iteration
;;;238 */
;;;239 if (y) {
00004c b32d CBZ r5,|L3.154|
;;;240 GL_DrawLine1(x0-xOld,y0-y+1,x0-x,y0-y);
00004e 9804 LDR r0,[sp,#0x10]
000050 eba60b09 SUB r11,r6,r9
000054 1b47 SUBS r7,r0,r5
000056 1b30 SUBS r0,r6,r4
000058 4602 MOV r2,r0
00005a 9001 STR r0,[sp,#4]
00005c 1c79 ADDS r1,r7,#1
00005e 463b MOV r3,r7
000060 4658 MOV r0,r11
000062 f7fffffe BL GL_DrawLine1
;;;241 GL_DrawLine1(x0-xOld,y0+y-1,x0-x,y0+y);
000066 9804 LDR r0,[sp,#0x10]
000068 9a01 LDR r2,[sp,#4]
00006a eb000805 ADD r8,r0,r5
00006e f1a80101 SUB r1,r8,#1
000072 4643 MOV r3,r8
000074 4658 MOV r0,r11
000076 f7fffffe BL GL_DrawLine1
;;;242 GL_DrawLine1(x0+xOld,y0-y+1,x0+x,y0-y);
00007a eb060b04 ADD r11,r6,r4
00007e 44b1 ADD r9,r9,r6
000080 1c79 ADDS r1,r7,#1
000082 463b MOV r3,r7
000084 465a MOV r2,r11
000086 4648 MOV r0,r9
000088 f7fffffe BL GL_DrawLine1
;;;243 GL_DrawLine1(x0+xOld,y0+y-1,x0+x,y0+y);
00008c f1a80101 SUB r1,r8,#1
000090 4643 MOV r3,r8
000092 465a MOV r2,r11
000094 4648 MOV r0,r9
000096 f7fffffe BL GL_DrawLine1
|L3.154|
;;;244 }
;;;245 xOld = x;
00009a 46a1 MOV r9,r4
00009c 1c6d ADDS r5,r5,#1 ;228
|L3.158|
00009e 4555 CMP r5,r10 ;228
0000a0 ddc0 BLE |L3.36|
;;;246 }
;;;247 }
0000a2 b007 ADD sp,sp,#0x1c
0000a4 e8bd8ff0 POP {r4-r11,pc}
;;;248
ENDP
AREA ||i.GL_FillCircle||, CODE, READONLY, ALIGN=2
GL_FillCircle PROC
;;;112 */
;;;113 void GL_FillCircle(int x0, int y0, int r) {
000000 e92d4ff8 PUSH {r3-r11,lr}
000004 4606 MOV r6,r0
000006 460f MOV r7,r1
;;;114 I32 i;
;;;115 int imax = ((I32)((I32)r*707))/1000+1;
000008 f24020c3 MOV r0,#0x2c3
00000c 4350 MULS r0,r2,r0
00000e f44f717a MOV r1,#0x3e8
000012 fb90f0f1 SDIV r0,r0,r1
000016 f1000801 ADD r8,r0,#1
;;;116 I32 sqmax = (I32)r*(I32)r+(I32)r/2;
00001a fb02f002 MUL r0,r2,r2
00001e eb0271d2 ADD r1,r2,r2,LSR #31
000022 eb000061 ADD r0,r0,r1,ASR #1
;;;117 I32 x=r;
;;;118 LCD_HL_DrawHLine(x0-r,y0,x0+r);
000026 18b1 ADDS r1,r6,r2
000028 9000 STR r0,[sp,#0]
00002a f8dfb084 LDR r11,|L4.176|
00002e 4614 MOV r4,r2 ;117
000030 1ab0 SUBS r0,r6,r2
000032 f8db2058 LDR r2,[r11,#0x58] ; GUI_Context
000036 6813 LDR r3,[r2,#0]
000038 460a MOV r2,r1
00003a 4639 MOV r1,r7
00003c 4798 BLX r3
;;;119 for (i=1; i<= imax; i++) {
00003e 2501 MOVS r5,#1
000040 e031 B |L4.166|
;;;120 if ((i*i+x*x) >sqmax) {
000042 bf00 NOP
|L4.68|
000044 fb05f005 MUL r0,r5,r5
000048 fb040004 MLA r0,r4,r4,r0
00004c 9900 LDR r1,[sp,#0]
00004e 4288 CMP r0,r1
000050 dd16 BLE |L4.128|
;;;121 /* draw lines from outside */
;;;122 if (x>imax) {
000052 4544 CMP r4,r8
000054 dd13 BLE |L4.126|
;;;123 LCD_HL_DrawHLine (x0-i+1,y0+x, x0+i-1);
000056 1972 ADDS r2,r6,r5
000058 f8db3058 LDR r3,[r11,#0x58] ; GUI_Context
00005c 4691 MOV r9,r2
00005e 1b70 SUBS r0,r6,r5
000060 1e52 SUBS r2,r2,#1
000062 1939 ADDS r1,r7,r4
000064 4682 MOV r10,r0
000066 681b LDR r3,[r3,#0]
000068 1c40 ADDS r0,r0,#1
00006a 4798 BLX r3
;;;124 LCD_HL_DrawHLine (x0-i+1,y0-x, x0+i-1);
00006c f8db3058 LDR r3,[r11,#0x58] ; GUI_Context
000070 f1a90201 SUB r2,r9,#1
000074 681b LDR r3,[r3,#0]
000076 1b39 SUBS r1,r7,r4
000078 f10a0001 ADD r0,r10,#1
00007c 4798 BLX r3
|L4.126|
;;;125 }
;;;126 x--;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -