📄 guidev_1.txt
字号:
;;;456 *pData ^= 1 << (Bit--);
000098 9002 STR r0,[sp,#8]
00009a e007 B |L7.172|
|L7.156|
00009c 9802 LDR r0,[sp,#8]
00009e 7822 LDRB r2,[r4,#0]
0000a0 fa01f300 LSL r3,r1,r0
0000a4 405a EORS r2,r2,r3
0000a6 1e40 SUBS r0,r0,#1
0000a8 9002 STR r0,[sp,#8]
0000aa 7022 STRB r2,[r4,#0]
|L7.172|
0000ac 1e6d SUBS r5,r5,#1 ;455
0000ae d2f5 BCS |L7.156|
0000b0 e03d B |L7.302|
|L7.178|
;;;457 }
;;;458 }
;;;459 } else { /* Fill */
;;;460 int Color, FillByte;
;;;461 Color = (LCD_COLORINDEX & 1);
0000b2 8840 LDRH r0,[r0,#2] ; GUI_Context
0000b4 f0000601 AND r6,r0,#1
;;;462 FillByte = (-Color) & 0xFF;
0000b8 4270 RSBS r0,r6,#0
0000ba b2c1 UXTB r1,r0
;;;463 if (Bit < 7) {
0000bc 9802 LDR r0,[sp,#8]
0000be 2807 CMP r0,#7
0000c0 da14 BGE |L7.236|
0000c2 464a MOV r2,r9 ;441
;;;464 while ((Bit >= 0) && RemPixels--) {
;;;465 *pData &= ~(1 << Bit);
;;;466 *pData |= Color << (Bit--);
0000c4 e00c B |L7.224|
|L7.198|
0000c6 7823 LDRB r3,[r4,#0] ;465
0000c8 fa02f000 LSL r0,r2,r0 ;465
0000cc 4383 BICS r3,r3,r0 ;465
0000ce 7023 STRB r3,[r4,#0] ;465
0000d0 9802 LDR r0,[sp,#8]
0000d2 b2db UXTB r3,r3
0000d4 fa06f700 LSL r7,r6,r0
0000d8 433b ORRS r3,r3,r7
0000da 1e40 SUBS r0,r0,#1
0000dc 9002 STR r0,[sp,#8]
0000de 7023 STRB r3,[r4,#0]
|L7.224|
0000e0 9802 LDR r0,[sp,#8] ;464
0000e2 2800 CMP r0,#0 ;464
0000e4 db01 BLT |L7.234|
0000e6 1e6d SUBS r5,r5,#1 ;464
0000e8 d2ed BCS |L7.198|
|L7.234|
;;;467 }
;;;468 pData++;
0000ea 1c64 ADDS r4,r4,#1
|L7.236|
;;;469 }
;;;470 if (RemPixels > 0) {
0000ec 2d00 CMP r5,#0
0000ee dd1e BLE |L7.302|
;;;471 int NumBytes = RemPixels >> 3;
0000f0 10ef ASRS r7,r5,#3
;;;472 if (NumBytes > 0) {
0000f2 2f00 CMP r7,#0
0000f4 dd07 BLE |L7.262|
;;;473 GUI_MEMSET(pData, FillByte, NumBytes);
0000f6 463a MOV r2,r7
0000f8 b2c9 UXTB r1,r1
0000fa 4620 MOV r0,r4
0000fc f7fffffe BL GUI__memset
;;;474 pData += NumBytes;
000100 443c ADD r4,r4,r7
;;;475 RemPixels -= NumBytes << 3;
000102 eba505c7 SUB r5,r5,r7,LSL #3
|L7.262|
;;;476 }
;;;477 Bit = 7;
000106 2007 MOVS r0,#7
000108 4649 MOV r1,r9 ;441
;;;478 while (RemPixels--) {
;;;479 *pData &= ~(1 << Bit);
;;;480 *pData |= Color << (Bit--);
00010a 9002 STR r0,[sp,#8]
00010c e00d B |L7.298|
|L7.270|
00010e 9a02 LDR r2,[sp,#8] ;479
000110 7820 LDRB r0,[r4,#0] ;479
000112 fa01f202 LSL r2,r1,r2 ;479
000116 4390 BICS r0,r0,r2 ;479
000118 7020 STRB r0,[r4,#0] ;479
00011a b2c2 UXTB r2,r0
00011c 9802 LDR r0,[sp,#8]
00011e fa06f300 LSL r3,r6,r0
000122 431a ORRS r2,r2,r3
000124 1e40 SUBS r0,r0,#1
000126 9002 STR r0,[sp,#8]
000128 7022 STRB r2,[r4,#0]
|L7.298|
00012a 1e6d SUBS r5,r5,#1 ;478
00012c d2ef BCS |L7.270|
|L7.302|
00012e f1080801 ADD r8,r8,#1 ;435
|L7.306|
000132 45d8 CMP r8,r11 ;435
000134 dd85 BLE |L7.66|
;;;481 }
;;;482 }
;;;483 }
;;;484 }
;;;485 }
000136 b007 ADD sp,sp,#0x1c
000138 e8bd8ff0 POP {r4-r11,pc}
;;;486
ENDP
|L7.316|
DCD GUI_Context
AREA ||i._GetPixelIndex||, CODE, READONLY, ALIGN=1
_GetPixelIndex PROC
;;;563 */
;;;564 static unsigned int _GetPixelIndex(int x, int y) {
000000 b508 PUSH {r3,lr}
;;;565 U8* pData;
;;;566 int Bit;
;;;567 pData = _XY2PTR_BITOFFSET(x, y, &Bit);
000002 466a MOV r2,sp
000004 f7fffffe BL _XY2PTR_BITOFFSET
;;;568 return (*pData >> Bit) & 1;
000008 7800 LDRB r0,[r0,#0]
00000a 9900 LDR r1,[sp,#0]
00000c 40c8 LSRS r0,r0,r1
00000e f0000001 AND r0,r0,#1
;;;569 }
000012 bd08 POP {r3,pc}
;;;570
ENDP
AREA ||i._SetPixelIndex||, CODE, READONLY, ALIGN=2
_SetPixelIndex PROC
;;;532 */
;;;533 static void _SetPixelIndex(int x, int y, int Index) {
000000 b5f8 PUSH {r3-r7,lr}
000002 4606 MOV r6,r0
;;;534 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 4815 LDR r0,|L9.92|
000006 460f MOV r7,r1 ;533
000008 4615 MOV r5,r2 ;533
00000a f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000e f7fffffe BL GUI_ALLOC_h2p
000012 4604 MOV r4,r0
;;;535 U8* pData;
;;;536 int Bit;
;;;537 pData = _XY2PTR_BITOFFSET(x, y, &Bit);
000014 466a MOV r2,sp
000016 4639 MOV r1,r7
000018 4630 MOV r0,r6
00001a f7fffffe BL _XY2PTR_BITOFFSET
;;;538 *pData &= ~(1 << Bit);
00001e 9b00 LDR r3,[sp,#0]
000020 7801 LDRB r1,[r0,#0]
000022 2201 MOVS r2,#1
000024 409a LSLS r2,r2,r3
000026 4391 BICS r1,r1,r2
000028 7001 STRB r1,[r0,#0]
;;;539 *pData |= (Index & 1) << Bit;
00002a 9b00 LDR r3,[sp,#0]
00002c f0050201 AND r2,r5,#1
000030 b2c9 UXTB r1,r1
000032 409a LSLS r2,r2,r3
000034 4311 ORRS r1,r1,r2
000036 7001 STRB r1,[r0,#0]
;;;540 if (pDev->hUsage) {
000038 f9b40018 LDRSH r0,[r4,#0x18]
00003c 2800 CMP r0,#0
00003e d00c BEQ |L9.90|
;;;541 GUI_USAGE_AddPixel(GUI_USAGE_H2P(pDev->hUsage), x, y);
000040 f7fffffe BL GUI_ALLOC_h2p
000044 4605 MOV r5,r0
000046 f9b40018 LDRSH r0,[r4,#0x18]
00004a f7fffffe BL GUI_ALLOC_h2p
00004e 6880 LDR r0,[r0,#8]
000050 463a MOV r2,r7
000052 6803 LDR r3,[r0,#0]
000054 4631 MOV r1,r6
000056 4628 MOV r0,r5
000058 4798 BLX r3
|L9.90|
;;;542 }
;;;543 }
00005a bdf8 POP {r3-r7,pc}
;;;544
ENDP
|L9.92|
DCD GUI_Context
AREA ||i._XY2PTR_BITOFFSET||, CODE, READONLY, ALIGN=2
_XY2PTR_BITOFFSET PROC
;;;70 */
;;;71 static U8* _XY2PTR_BITOFFSET(int x, int y, int* pBitOffset) {
000000 b570 PUSH {r4-r6,lr}
000002 4606 MOV r6,r0
;;;72 GUI_ALLOC_DATATYPE_U Offset;
;;;73 GUI_MEMDEV* pDev;
;;;74 U8* pData;
;;;75 pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 480d LDR r0,|L10.60|
000006 460d MOV r5,r1 ;71
000008 4614 MOV r4,r2 ;71
00000a f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000e f7fffffe BL GUI_ALLOC_h2p
;;;76 pData = (U8*)(pDev + 1);
;;;77 #if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
;;;78 if ((x >= pDev->x0+pDev->XSize) | (x<pDev->x0) | (y >= pDev->y0+pDev->YSize) | (y<pDev->y0)) {
;;;79 GUI_DEBUG_ERROROUT2("_XY2PTR: parameters out of bounds", x, y);
;;;80 }
;;;81 #endif
;;;82 x -= pDev->x0;
000012 f9b01000 LDRSH r1,[r0,#0]
000016 f100022c ADD r2,r0,#0x2c ;76
;;;83 y -= pDev->y0;
00001a 8843 LDRH r3,[r0,#2]
00001c 1a71 SUBS r1,r6,r1 ;82
;;;84 Offset = (GUI_ALLOC_DATATYPE_U)(y) * (GUI_ALLOC_DATATYPE_U)(pDev->BytesPerLine) + (x >> 3);
00001e 68c0 LDR r0,[r0,#0xc]
000020 1aeb SUBS r3,r5,r3 ;83
000022 4358 MULS r0,r3,r0
000024 eb0000e1 ADD r0,r0,r1,ASR #3
000028 b280 UXTH r0,r0
;;;85 if (pBitOffset) {
00002a b124 CBZ r4,|L10.54|
;;;86 *pBitOffset = 7 - (x & 7);
00002c f0010107 AND r1,r1,#7
000030 f1c10107 RSB r1,r1,#7
000034 6021 STR r1,[r4,#0]
|L10.54|
;;;87 }
;;;88 return pData + Offset;
000036 4410 ADD r0,r0,r2
;;;89 }
000038 bd70 POP {r4-r6,pc}
;;;90
ENDP
00003a 0000 DCW 0x0000
|L10.60|
DCD GUI_Context
AREA ||i._XorPixel||, CODE, READONLY, ALIGN=2
_XorPixel PROC
;;;548 */
;;;549 static void _XorPixel(int x, int y) {
000000 b5f8 PUSH {r3-r7,lr}
000002 4605 MOV r5,r0
;;;550 GUI_MEMDEV* pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData);
000004 4811 LDR r0,|L11.76|
000006 460e MOV r6,r1 ;549
000008 f9b0004c LDRSH r0,[r0,#0x4c] ; GUI_Context
00000c f7fffffe BL GUI_ALLOC_h2p
000010 4604 MOV r4,r0
;;;551 U8* pData;
;;;552 int Bit;
;;;553 pData = _XY2PTR_BITOFFSET(x, y, &Bit);
000012 466a MOV r2,sp
000014 4631 MOV r1,r6
000016 4628 MOV r0,r5
000018 f7fffffe BL _XY2PTR_BITOFFSET
;;;554 *pData ^= (1 << Bit);
00001c 9b00 LDR r3,[sp,#0]
00001e 7801 LDRB r1,[r0,#0]
000020 2201 MOVS r2,#1
000022 409a LSLS r2,r2,r3
000024 4051 EORS r1,r1,r2
000026 7001 STRB r1,[r0,#0]
;;;555 if (pDev->hUsage) {
000028 f9b40018 LDRSH r0,[r4,#0x18]
00002c 2800 CMP r0,#0
00002e d00c BEQ |L11.74|
;;;556 GUI_USAGE_AddPixel(GUI_USAGE_H2P(pDev->hUsage), x, y);
000030 f7fffffe BL GUI_ALLOC_h2p
000034 4607 MOV r7,r0
000036 f9b40018 LDRSH r0,[r4,#0x18]
00003a f7fffffe BL GUI_ALLOC_h2p
00003e 6880 LDR r0,[r0,#8]
000040 4632 MOV r2,r6
000042 6803 LDR r3,[r0,#0]
000044 4629 MOV r1,r5
000046 4638 MOV r0,r7
000048 4798 BLX r3
|L11.74|
;;;557 }
;;;558 }
00004a bdf8 POP {r3-r7,pc}
;;;559
ENDP
|L11.76|
DCD GUI_Context
AREA ||.constdata||, DATA, READONLY, ALIGN=1
aID
000000 00000001 DCW 0x0000,0x0001
000004 00020003 DCW 0x0002,0x0003
000008 00040005 DCW 0x0004,0x0005
00000c 00060007 DCW 0x0006,0x0007
000010 00080009 DCW 0x0008,0x0009
000014 000a000b DCW 0x000a,0x000b
000018 000c000d DCW 0x000c,0x000d
00001c 000e000f DCW 0x000e,0x000f
AREA ||area_number.15||, DATA, READONLY, ALIGN=2
EXPORTAS ||area_number.15||, ||.constdata||
GUI_MEMDEV__APIList1
DCD GUI_MEMDEV__Color2Index
DCD GUI_MEMDEV__Index2Color
DCD GUI_MEMDEV__GetIndexMask
DCD _DrawBitmap
DCD _DrawHLine
DCD _DrawVLine
DCD _FillRect
DCD _GetPixelIndex
DCD GUI_MEMDEV__GetRect
DCD _SetPixelIndex
DCD _XorPixel
DCD 0x00000000
DCD 0x00000000
DCD 0x00000000
DCD 0x00000000
DCD 0x00000001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -