📄 memdev_banding.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\memdev_banding.o --depend=.\Obj\memdev_banding.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 -D__MICROLIB ..\..\source\memdev_banding.c]
THUMB
AREA ||i._DrawIt||, CODE, READONLY, ALIGN=2
_DrawIt PROC
;;;62 */
;;;63 static void _DrawIt(void * pData) {
000000 b510 PUSH {r4,lr}
;;;64 tDrawItContext * pDrawItContext = (tDrawItContext *)pData;
000002 4604 MOV r4,r0
;;;65 GUI_Clear();
000004 f7fff7ff BL GUI_Clear
;;;66 GUI_SetFont(&GUI_Font8x8);
000008 4816 LDR r0,|L1.100|
00000a f7fff7ff BL GUI_SetFont
;;;67 GUI_SetTextMode(GUI_TM_TRANS);
00000e 2002 MOVS r0,#2
000010 f7fff7ff BL GUI_SetTextMode
;;;68 /* draw background */
;;;69 GUI_SetColor(GUI_GREEN);
000014 f44ff44f MOV r0,#0xff00
000018 f7fff7ff BL GUI_SetColor
;;;70 GUI_FillRect(pDrawItContext->XPos_Text,
00001c 68e1 LDR r1,[r4,#0xc]
00001e 68a0 LDR r0,[r4,#8]
000020 1f4b SUBS r3,r1,#5
000022 f100f100 ADD r2,r0,#0x64
000026 3919 SUBS r1,r1,#0x19
000028 f7fff7ff BL GUI_FillRect
;;;71 pDrawItContext->YPos_Text - 25,
;;;72 pDrawItContext->XPos_Text + 100,
;;;73 pDrawItContext->YPos_Text - 5);
;;;74 /* draw polygon */
;;;75 GUI_SetColor(GUI_BLUE);
00002c f44ff44f MOV r0,#0xff0000
000030 f7fff7ff BL GUI_SetColor
;;;76 GUI_FillPolygon(pDrawItContext->aPointsDest, SIZE_OF_ARRAY(aPoints), 160, 120);
000034 2378 MOVS r3,#0x78
000036 22a0 MOVS r2,#0xa0
000038 2108 MOVS r1,#8
00003a f104f104 ADD r0,r4,#0x10
00003e f7fff7ff BL GUI_FillPolygon
;;;77 /* draw foreground */
;;;78 GUI_SetColor(GUI_RED);
000042 20ff MOVS r0,#0xff
000044 f7fff7ff BL GUI_SetColor
;;;79 GUI_FillRect(220 - pDrawItContext->XPos_Text,
000048 68e1 LDR r1,[r4,#0xc]
00004a 68a0 LDR r0,[r4,#8]
00004c f101f101 ADD r3,r1,#0x19
000050 f5c0f5c0 RSB r2,r0,#0x140
000054 e8bde8bd POP {r4,lr}
000058 1d49 ADDS r1,r1,#5
00005a f1c0f1c0 RSB r0,r0,#0xdc
00005e f7fff7ff B.W GUI_FillRect
;;;80 pDrawItContext->YPos_Text + 5,
;;;81 220 - pDrawItContext->XPos_Text + 100,
;;;82 pDrawItContext->YPos_Text + 25);
;;;83 }
;;;84
ENDP
000062 0000 DCW 0x0000
|L1.100|
000064 00000000 DCD GUI_Font8x8
AREA ||i._DemoBandingMemdev||, CODE, READONLY, ALIGN=2
_DemoBandingMemdev PROC
;;;88 */
;;;89 static void _DemoBandingMemdev(void) {
000000 e92de92d PUSH {r4-r9,lr}
;;;90 tDrawItContext DrawItContext;
;;;91 int i, swap=0;
000004 2500 MOVS r5,#0
000006 b08f SUB sp,sp,#0x3c ;89
;;;92 GUI_SetBkColor(GUI_BLACK);
000008 4628 MOV r0,r5
00000a f7fff7ff BL GUI_SetBkColor
;;;93 GUI_Clear();
00000e f7fff7ff BL GUI_Clear
;;;94 GUI_SetColor(GUI_WHITE);
000012 f06ff06f MVN r0,#0xff000000
000016 f7fff7ff BL GUI_SetColor
;;;95 GUI_SetFont(&GUI_Font24_ASCII);
00001a 4823 LDR r0,|L2.168|
00001c f7fff7ff BL GUI_SetFont
;;;96 GUI_DispStringHCenterAt("MEMDEV_Banding - Sample", 160, 5);
000020 2205 MOVS r2,#5
000022 21a0 MOVS r1,#0xa0
000024 a021 ADR r0,|L2.172|
000026 f7fff7ff BL GUI_DispStringHCenterAt
;;;97 GUI_SetFont(&GUI_Font8x9);
00002a 4826 LDR r0,|L2.196|
00002c f7fff7ff BL GUI_SetFont
;;;98 GUI_DispStringHCenterAt("Banding memory device\nwithout flickering", 160, 40);
000030 2228 MOVS r2,#0x28
000032 21a0 MOVS r1,#0xa0
000034 a024 ADR r0,|L2.200|
000036 f7fff7ff BL GUI_DispStringHCenterAt
;;;99 DrawItContext.XPos_Poly = 160;
00003a 20a0 MOVS r0,#0xa0
;;;100 DrawItContext.YPos_Poly = 120;
00003c 9003 STR r0,[sp,#0xc]
00003e 2078 MOVS r0,#0x78
;;;101 DrawItContext.YPos_Text = 116;
000040 9004 STR r0,[sp,#0x10]
000042 2074 MOVS r0,#0x74
000044 f8dff8df LDR r8,|L2.260|
000048 a62a ADR r6,|L2.244|
00004a a72c ADR r7,|L2.252|
00004c f10df10d ADD r9,sp,#0x1c
000050 9006 STR r0,[sp,#0x18]
|L2.82|
;;;102 while (1) {
;;;103 swap = ~swap;
000052 43ed MVNS r5,r5
;;;104 for (i = 0; i < 220; i++) {
000054 2400 MOVS r4,#0
|L2.86|
;;;105 float angle = i * 3.1415926 / 55;
000056 4620 MOV r0,r4
000058 f7fff7ff BL __aeabi_i2d
00005c e9d6e9d6 LDRD r2,r3,[r6,#0]
000060 f7fff7ff BL __aeabi_dmul
000064 e9d7e9d7 LDRD r2,r3,[r7,#0]
000068 f7fff7ff BL __aeabi_ddiv
00006c f7fff7ff BL __aeabi_d2f
;;;106 DrawItContext.XPos_Text = (swap) ? i : 220 - i;
000070 4621 MOV r1,r4
000072 b90d CBNZ r5,|L2.120|
000074 f1c4f1c4 RSB r1,r4,#0xdc
|L2.120|
;;;107 /* Rotate the polygon */
;;;108 GUI_RotatePolygon(DrawItContext.aPointsDest, aPoints,
000078 9105 STR r1,[sp,#0x14]
00007a 4922 LDR r1,|L2.260|
00007c 4603 MOV r3,r0
00007e 2208 MOVS r2,#8
000080 3108 ADDS r1,r1,#8
000082 4648 MOV r0,r9
000084 f7fff7ff BL GUI_RotatePolygon
;;;109 SIZE_OF_ARRAY(aPoints), angle);
;;;110 #if USE_BANDING_MEMDEV
;;;111 {
;;;112 GUI_RECT Rect = {0, 70, 320,170};
000088 e9d8e9d8 LDRD r0,r1,[r8,#0]
;;;113 /* Use banding memory device for drawing */
;;;114 GUI_MEMDEV_Draw(&Rect, &_DrawIt, &DrawItContext, 0, 0);
00008c 2300 MOVS r3,#0
00008e e9cde9cd STRD r3,r0,[sp,#0]
000092 9102 STR r1,[sp,#8]
000094 aa03 ADD r2,sp,#0xc
000096 491c LDR r1,|L2.264|
000098 a801 ADD r0,sp,#4
00009a f7fff7ff BL GUI_MEMDEV_Draw
00009e 1c64 ADDS r4,r4,#1 ;104
0000a0 2cdc CMP r4,#0xdc ;104
0000a2 dbd8 BLT |L2.86|
0000a4 e7d5 B |L2.82|
;;;115 }
;;;116 #else
;;;117 /* Simple drawing without using memory devices */
;;;118 _DrawIt((void *)&DrawItContext);
;;;119 #endif
;;;120 #ifdef WIN32
;;;121 GUI_Delay(20); /* Use a short delay only in the simulation */
;;;122 #endif
;;;123 }
;;;124 }
;;;125 }
;;;126
ENDP
0000a6 0000 DCW 0x0000
|L2.168|
0000a8 00000000 DCD GUI_Font24_ASCII
|L2.172|
0000ac 4d454d44 DCB "MEMD"
0000b0 45565f42 DCB "EV_B"
0000b4 616e6469 DCB "andi"
0000b8 6e67202d DCB "ng -"
0000bc 2053616d DCB " Sam"
0000c0 706c6500 DCB "ple\0"
|L2.196|
0000c4 00000000 DCD GUI_Font8x9
|L2.200|
0000c8 42616e64 DCB "Band"
0000cc 696e6720 DCB "ing "
0000d0 6d656d6f DCB "memo"
0000d4 72792064 DCB "ry d"
0000d8 65766963 DCB "evic"
0000dc 650a7769 DCB "e\n\167\151"
0000e0 74686f75 DCB "thou"
0000e4 7420666c DCB "t fl"
0000e8 69636b65 DCB "icke"
0000ec 72696e67 DCB "ring"
0000f0 00000000 DCB "\0\0\0\0"
|L2.244|
0000f4 4d12d84a
0000f8 400921fb DCFD 0x400921fb4d12d84a ; 3.1415926000000001
|L2.252|
0000fc 00000000
000100 404b8000 DCFD 0x404b800000000000 ; 55
|L2.260|
000104 00000000 DCD ||.constdata||
|L2.264|
000108 00000000 DCD _DrawIt
AREA ||i.MainTask||, CODE, READONLY, ALIGN=1
MainTask PROC
;;;135
;;;136 void MainTask(void) {
000000 b510 PUSH {r4,lr}
;;;137 GUI_Init();
000002 f7fff7ff BL GUI_Init
;;;138 _DemoBandingMemdev();
000006 e8bde8bd POP {r4,lr}
00000a f7fff7ff B.W _DemoBandingMemdev
;;;139 }
;;;140
ENDP
AREA ||.constdata||, DATA, READONLY, ALIGN=2
000000 00000046 DCW 0x0000,0x0046
000004 014000aa DCW 0x0140,0x00aa
aPoints
000008 ffce0000 DCW 0xffce,0x0000
00000c fff6000a DCW 0xfff6,0x000a
000010 00000032 DCW 0x0000,0x0032
000014 000a000a DCW 0x000a,0x000a
000018 00320000 DCW 0x0032,0x0000
00001c 000afff6 DCW 0x000a,0xfff6
000020 0000ffce DCW 0x0000,0xffce
000024 fff6fff6 DCW 0xfff6,0xfff6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -