📄 guidev_usagebm.txt
字号:
000036 4904 LDR r1,|L4.72|
;;;237 pUsage->Public.UseCnt= 1;
000038 6081 STR r1,[r0,#8]
00003a 2101 MOVS r1,#1
00003c 8181 STRH r1,[r0,#0xc]
;;;238 pUsage->Private.BytesPerLine= BytesPerLine;
;;;239 GUI_UNLOCK();
;;;240 }
;;;241 return hMem;
00003e 6105 STR r5,[r0,#0x10]
000040 4620 MOV r0,r4
|L4.66|
;;;242 }
000042 e8bd87f0 POP {r4-r10,pc}
;;;243
ENDP
000046 0000 DCW 0x0000
|L4.72|
DCD ||.constdata||
AREA ||i.GUI_USAGE_BM_GetNextDirty||, CODE, READONLY, ALIGN=2
GUI_USAGE_BM_GetNextDirty PROC
;;;124 */
;;;125 static int GUI_USAGE_BM_GetNextDirty(GUI_USAGE* p, int *pxOff, int yOff) {
000000 b570 PUSH {r4-r6,lr}
;;;126 int x = *pxOff;
;;;127 int xEnd;
;;;128 GUI_USAGE_BM * pThis = (GUI_USAGE_BM*)p;
;;;129 int xSize = pThis->Public.XSize;
;;;130 U8* pData = (U8*)(pThis+1);
;;;131 if (yOff >= pThis->Public.YSize) {
000002 f9b06006 LDRSH r6,[r0,#6]
000006 f9b05004 LDRSH r5,[r0,#4] ;129
00000a 680b LDR r3,[r1,#0]
00000c f1000414 ADD r4,r0,#0x14 ;130
000010 4296 CMP r6,r2
000012 dd14 BLE |L5.62|
;;;132 return 0;
;;;133 }
;;;134 pData += yOff * pThis->Private.BytesPerLine;
000014 6900 LDR r0,[r0,#0x10]
;;;135 pData += (x>>3);
;;;136 if (x>=xSize)
000016 42ab CMP r3,r5
000018 fb024000 MLA r0,r2,r0,r4 ;134
00001c eb0004e3 ADD r4,r0,r3,ASR #3 ;135
000020 da0d BGE |L5.62|
;;;137 return 0;
;;;138 {
;;;139 /* Find first bit */
;;;140 int BytesLeft = ((xSize-1) >>3) - (x>>3);
000022 1e6d SUBS r5,r5,#1
000024 ea4f00e5 ASR r0,r5,#3
000028 eba005e3 SUB r5,r0,r3,ASR #3
;;;141 /* Check first byte */
;;;142 U8 Data = (*pData++) << (x&7);
00002c f8140b01 LDRB r0,[r4],#1
000030 f0030207 AND r2,r3,#7
000034 fa00f002 LSL r0,r0,r2
000038 b2c0 UXTB r0,r0
;;;143 while (Data == 0) {
00003a e008 B |L5.78|
|L5.60|
;;;144 if (BytesLeft ==0)
00003c b90d CBNZ r5,|L5.66|
|L5.62|
;;;145 return 0;
00003e 2000 MOVS r0,#0
;;;146 Data = *pData++;
;;;147 BytesLeft--;
;;;148 x= (x+8) & ~7;
;;;149 }
;;;150 while ((Data&0x80) ==0) {
;;;151 Data<<=1;
;;;152 x++;
;;;153 }
;;;154 /* Find last cleared byte */
;;;155 if (Data != 0xff) { /* This line is simply a speed-opt and may be eliminated */
;;;156 xEnd =x;
;;;157 while (Data&0x40) {
;;;158 Data<<=1;
;;;159 xEnd++;
;;;160 }
;;;161 } else {
;;;162 xEnd =x+7;
;;;163 }
;;;164 if ((xEnd&7) ==7) {
;;;165 while (--BytesLeft >= 0) {
;;;166 if ((Data = *pData++) == 0xff) {
;;;167 xEnd+=8;
;;;168 } else {
;;;169 while (Data&0x80) {
;;;170 Data<<=1;
;;;171 xEnd++;
;;;172 }
;;;173 break;
;;;174 }
;;;175 }
;;;176 }
;;;177
;;;178 }
;;;179 *pxOff =x;
;;;180 return xEnd-x+1;
;;;181 }
000040 bd70 POP {r4-r6,pc}
|L5.66|
000042 1e6d SUBS r5,r5,#1 ;147
000044 f8140b01 LDRB r0,[r4],#1 ;146
000048 3308 ADDS r3,r3,#8 ;148
00004a f0230307 BIC r3,r3,#7 ;148
|L5.78|
00004e 2800 CMP r0,#0 ;143
000050 d0f4 BEQ |L5.60|
000052 e004 B |L5.94|
|L5.84|
000054 ea4f6040 LSL r0,r0,#25 ;151
000058 ea4f6010 LSR r0,r0,#24 ;151
00005c 1c5b ADDS r3,r3,#1 ;152
|L5.94|
00005e 0602 LSLS r2,r0,#24 ;150
000060 d5f8 BPL |L5.84|
000062 28ff CMP r0,#0xff ;155
000064 461a MOV r2,r3 ;156
000066 d009 BEQ |L5.124|
000068 e005 B |L5.118|
00006a bf00 NOP ;158
|L5.108|
00006c ea4f6040 LSL r0,r0,#25 ;158
000070 ea4f6010 LSR r0,r0,#24 ;158
000074 1c52 ADDS r2,r2,#1 ;159
|L5.118|
000076 0646 LSLS r6,r0,#25 ;157
000078 d4f8 BMI |L5.108|
00007a e000 B |L5.126|
|L5.124|
00007c 1dd2 ADDS r2,r2,#7 ;162
|L5.126|
00007e 43d0 MVNS r0,r2 ;164
000080 0740 LSLS r0,r0,#29 ;164
000082 d108 BNE |L5.150|
000084 e005 B |L5.146|
000086 bf00 NOP ;166
|L5.136|
000088 f8140b01 LDRB r0,[r4],#1 ;166
00008c 28ff CMP r0,#0xff ;166
00008e d10c BNE |L5.170|
000090 3208 ADDS r2,r2,#8 ;167
|L5.146|
000092 1e6d SUBS r5,r5,#1 ;165
000094 d5f8 BPL |L5.136|
|L5.150|
000096 1ad0 SUBS r0,r2,r3 ;180
000098 1c40 ADDS r0,r0,#1 ;180
00009a 600b STR r3,[r1,#0] ;180
00009c bd70 POP {r4-r6,pc}
00009e bf00 NOP ;170
|L5.160|
0000a0 ea4f6040 LSL r0,r0,#25 ;170
0000a4 ea4f6010 LSR r0,r0,#24 ;170
0000a8 1c52 ADDS r2,r2,#1 ;171
|L5.170|
0000aa 0604 LSLS r4,r0,#24 ;169
0000ac d4f8 BMI |L5.160|
0000ae e7f2 B |L5.150|
;;;182
ENDP
AREA ||i._GUI_USAGE_BM_Delete||, CODE, READONLY, ALIGN=1
_GUI_USAGE_BM_Delete PROC
;;;186 */
;;;187 static void _GUI_USAGE_BM_Delete(GUI_MEMDEV_Handle hDevUsage) {
000000 f7ffbffe B.W GUI_ALLOC_Free
;;;188 GUI_ALLOC_Free(hDevUsage);
;;;189 }
;;;190
ENDP
AREA ||.constdata||, DATA, READONLY, ALIGN=2
API
DCD GUI_USAGE_BM_AddPixel
DCD GUI_USAGE_BM_AddHLine
DCD GUI_USAGE_BM_Clear
DCD 0x00000000
DCD _GUI_USAGE_BM_Delete
DCD GUI_USAGE_BM_GetNextDirty
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -