📄 guidev_usagebm.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\guidev_usagebm.o --depend=.\Obj\guidev_usagebm.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\MemDev\GUIDEV_UsageBM.c]
THUMB
AREA ||i.GUI_USAGE_BM_AddHLine||, CODE, READONLY, ALIGN=1
GUI_USAGE_BM_AddHLine PROC
;;;75 */
;;;76 static void GUI_USAGE_BM_AddHLine(GUI_USAGE* p, int x, int y, int len) {
000000 b570 PUSH {r4-r6,lr}
;;;77 #if 0 /* Enable for the slower, but smaller version ... xxx*/
;;;78 while (len-- >0)
;;;79 GUI_USAGE_BM_AddPixel(h, x++,y);
;;;80 #else
;;;81 U8* pData;
;;;82 GUI_USAGE_BM * pThis = (GUI_USAGE_BM*)p;
;;;83 /* Asserts */
;;;84 GUI_DEBUG_ERROROUT3_IF( x<pThis->Public.x0, "GUIDEV.c: MarkPixels: negative x offset, Act= %d, Border= %d, Clip= %d"
;;;85 ,x, pThis->Public.x0, GUI_Context.ClipRect.x0);
;;;86 /* Calculate pointers */
;;;87 x -= pThis->Public.x0;
000002 f9b05000 LDRSH r5,[r0,#0]
;;;88 pData = (U8*)(pThis+1);
000006 f1000414 ADD r4,r0,#0x14
;;;89 pData += (y-pThis->Public.y0) * pThis->Private.BytesPerLine;
00000a f9b06002 LDRSH r6,[r0,#2]
00000e 6900 LDR r0,[r0,#0x10]
000010 1b92 SUBS r2,r2,r6
000012 1b49 SUBS r1,r1,r5 ;87
000014 fb024000 MLA r0,r2,r0,r4
;;;90 pData += x>>3;
;;;91 /* Set bits */
;;;92 {
;;;93 int x1 = x+len-1; /* last pixel */
000018 18ca ADDS r2,r1,r3
00001a 1e52 SUBS r2,r2,#1
;;;94 int NumBytes = (x1>>3) - (x>>3);
00001c 10d3 ASRS r3,r2,#3
00001e ebb304e1 SUBS r4,r3,r1,ASR #3
000022 eb0000e1 ADD r0,r0,r1,ASR #3 ;90
;;;95 U8 Mask0 = 0xff >> (x&7);
000026 f0010507 AND r5,r1,#7
00002a f04f03ff MOV r3,#0xff
;;;96 U8 Mask1 = 0xff << (7-(x1&7));
00002e f0020207 AND r2,r2,#7
000032 fa23f105 LSR r1,r3,r5 ;95
000036 f1c20207 RSB r2,r2,#7
00003a fa03f302 LSL r3,r3,r2
;;;97 if (NumBytes ==0) {
;;;98 *pData |= (Mask0&Mask1);
00003e 7802 LDRB r2,[r0,#0]
000040 b2de UXTB r6,r3 ;96
000042 d103 BNE |L1.76|
000044 4031 ANDS r1,r1,r6
000046 430a ORRS r2,r2,r1
000048 7002 STRB r2,[r0,#0]
;;;99 } else {
;;;100 *pData++ |= Mask0; /* Mark first byte */
;;;101 /* Mark middle bytes */
;;;102 if (--NumBytes > 0) {
;;;103 memset (pData, 0xff, NumBytes);
;;;104 pData += NumBytes;
;;;105 }
;;;106 *pData |= Mask1; /* Mark last bytes */
;;;107 }
;;;108 }
;;;109 #endif
;;;110 }
00004a bd70 POP {r4-r6,pc}
|L1.76|
00004c 430a ORRS r2,r2,r1 ;100
00004e 1c45 ADDS r5,r0,#1 ;100
000050 1e64 SUBS r4,r4,#1 ;102
000052 7002 STRB r2,[r0,#0] ;100
000054 2c00 CMP r4,#0 ;102
000056 dd05 BLE |L1.100|
000058 22ff MOVS r2,#0xff ;103
00005a 4621 MOV r1,r4 ;103
00005c 4628 MOV r0,r5 ;103
00005e f7fffffe BL __aeabi_memset
000062 4425 ADD r5,r5,r4 ;104
|L1.100|
000064 7828 LDRB r0,[r5,#0] ;106
000066 4330 ORRS r0,r0,r6 ;106
000068 7028 STRB r0,[r5,#0] ;106
00006a bd70 POP {r4-r6,pc}
;;;111
ENDP
AREA ||i.GUI_USAGE_BM_AddPixel||, CODE, READONLY, ALIGN=1
GUI_USAGE_BM_AddPixel PROC
;;;54 */
;;;55 static void GUI_USAGE_BM_AddPixel(GUI_USAGE* p, int x, int y) {
000000 b530 PUSH {r4,r5,lr}
;;;56 U8* pData;
;;;57 GUI_USAGE_BM * pThis = (GUI_USAGE_BM*)p;
;;;58 #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
;;;59 if ((x >= pThis->Public.x0 + pThis->Public.XSize) | (x < pThis->Public.x0)
;;;60 | (y >= pThis->Public.y0 + pThis->Public.YSize) | (y < pThis->Public.y0))
;;;61 {
;;;62 GUI_DEBUG_ERROROUT2("GUI_USAGE_BM_AddPixel: parameters out of bounds",x,y);
;;;63 }
;;;64 #endif
;;;65 x -= pThis->Public.x0;
000002 f9b04000 LDRSH r4,[r0,#0]
;;;66 pData = (U8*)(pThis+1);
000006 f1000314 ADD r3,r0,#0x14
;;;67 pData += (y-pThis->Public.y0) * pThis->Private.BytesPerLine;
00000a f9b05002 LDRSH r5,[r0,#2]
00000e 1b09 SUBS r1,r1,r4 ;65
000010 6900 LDR r0,[r0,#0x10]
000012 1b52 SUBS r2,r2,r5
000014 fb023000 MLA r0,r2,r0,r3
;;;68 pData += x>>3;
000018 eb0000e1 ADD r0,r0,r1,ASR #3
;;;69 *pData|= 0x80>>(x&7);
00001c f0010307 AND r3,r1,#7
000020 7802 LDRB r2,[r0,#0]
000022 2180 MOVS r1,#0x80
000024 40d9 LSRS r1,r1,r3
000026 430a ORRS r2,r2,r1
000028 7002 STRB r2,[r0,#0]
;;;70 }
00002a bd30 POP {r4,r5,pc}
;;;71
ENDP
AREA ||i.GUI_USAGE_BM_Clear||, CODE, READONLY, ALIGN=1
GUI_USAGE_BM_Clear PROC
;;;115 */
;;;116 static void GUI_USAGE_BM_Clear(GUI_USAGE* p) {
000000 f9b01006 LDRSH r1,[r0,#6]
;;;117 GUI_USAGE_BM * pThis = (GUI_USAGE_BM*) p;
;;;118 memset (pThis+1, 0, pThis->Public.YSize * pThis->Private.BytesPerLine);
000004 6902 LDR r2,[r0,#0x10]
000006 4351 MULS r1,r2,r1
000008 3014 ADDS r0,r0,#0x14
00000a f7ffbffe B.W __aeabi_memclr4
;;;119 }
;;;120
ENDP
AREA ||i.GUI_USAGE_BM_Create||, CODE, READONLY, ALIGN=2
GUI_USAGE_BM_Create PROC
;;;214 */
;;;215 GUI_USAGE_Handle GUI_USAGE_BM_Create(int x0, int y0, int xsize, int ysize, int Flags) {
000000 e92d47f0 PUSH {r4-r10,lr}
000004 4680 MOV r8,r0
;;;216 int MemSize;
;;;217 int BytesPerLine;
;;;218 GUI_USAGE_Handle hMem;
;;;219 GUI_USE_PARA(Flags);
;;;220 BytesPerLine = ((xsize+15) >>4)<<1; /* 2 byte alignment */
000006 f102000f ADD r0,r2,#0xf
00000a 1100 ASRS r0,r0,#4
00000c 0045 LSLS r5,r0,#1
;;;221 MemSize = ysize*BytesPerLine +sizeof(GUI_USAGE_BM);
00000e fb03f005 MUL r0,r3,r5
000012 3014 ADDS r0,r0,#0x14
000014 4689 MOV r9,r1 ;215
000016 4616 MOV r6,r2 ;215
000018 461f MOV r7,r3 ;215
;;;222 hMem = GUI_ALLOC_AllocZero(MemSize);
00001a b200 SXTH r0,r0
00001c f7fffffe BL GUI_ALLOC_AllocZero
000020 0004 MOVS r4,r0
;;;223 /* Check if we can alloc sufficient memory */
;;;224 if (!hMem) {
000022 d00e BEQ |L4.66|
;;;225 GUI_DEBUG_ERROROUT("GUI_USAGE_BM_Create: Too little memory");
;;;226 return 0;
;;;227 }
;;;228 {
;;;229 GUI_USAGE_BM * pUsage;
;;;230 GUI_LOCK();
;;;231 pUsage = (GUI_USAGE_BM*)GUI_ALLOC_h2p(hMem);
000024 4620 MOV r0,r4
000026 f7fffffe BL GUI_ALLOC_h2p
;;;232 pUsage->Public.x0 = x0;
00002a f8a08000 STRH r8,[r0,#0]
;;;233 pUsage->Public.y0 = y0;
00002e f8a09002 STRH r9,[r0,#2]
;;;234 pUsage->Public.XSize = xsize;
000032 8086 STRH r6,[r0,#4]
;;;235 pUsage->Public.YSize = ysize;
000034 80c7 STRH r7,[r0,#6]
;;;236 pUsage->Public.pAPI = &API;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -