gui_getbitmappixelindex.txt
来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 107 行
TXT
107 行
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\gui_getbitmappixelindex.o --depend=.\Obj\gui_getbitmappixelindex.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\GUI_GetBitmapPixelIndex.c]
THUMB
AREA ||i.GUI_GetBitmapPixelIndex||, CODE, READONLY, ALIGN=1
GUI_GetBitmapPixelIndex PROC
;;;31 */
;;;32 int GUI_GetBitmapPixelIndex(const GUI_BITMAP GUI_UNI_PTR * pBMP, unsigned x, unsigned y) {
000000 b530 PUSH {r4,r5,lr}
;;;33 unsigned Off, Value;
;;;34 switch (pBMP->BitsPerPixel) {
000002 88c3 LDRH r3,[r0,#6]
000004 2b04 CMP r3,#4
000006 d02d BEQ |L1.100|
000008 dc12 BGT |L1.48|
00000a 2b01 CMP r3,#1
00000c d01c BEQ |L1.72|
00000e 2b02 CMP r3,#2
000010 d13a BNE |L1.136|
;;;35 case 1:
;;;36 Off = (x >> 3) + (y * pBMP->BytesPerLine);
;;;37 Value = *(pBMP->pData + Off);
;;;38 Value = Value >> (7 - (x & 0x7)) & 0x1;
;;;39 break;
;;;40 case 2:
;;;41 Off = (x >> 2) + (y * pBMP->BytesPerLine);
000012 8885 LDRH r5,[r0,#4]
000014 6883 LDR r3,[r0,#8]
000016 4355 MULS r5,r2,r5
000018 eb050091 ADD r0,r5,r1,LSR #2
;;;42 Value = *(pBMP->pData + Off);
;;;43 Value = Value >> (6 - ((x << 1) & 0x6)) & 0x3;
00001c 2406 MOVS r4,#6
00001e 5c18 LDRB r0,[r3,r0] ;42
000020 ea040141 AND r1,r4,r1,LSL #1
000024 f1c10106 RSB r1,r1,#6
000028 40c8 LSRS r0,r0,r1
00002a f0000003 AND r0,r0,#3
;;;44 break;
;;;45 case 4:
;;;46 Off = (x >> 1) + (y * pBMP->BytesPerLine);
;;;47 Value = *(pBMP->pData + Off);
;;;48 Value = (x & 1) ? (Value & 0xF) : (Value >> 4);
;;;49 break;
;;;50 case 8:
;;;51 Off = x + y * pBMP->BytesPerLine;
;;;52 Value = *(pBMP->pData + Off);
;;;53 break;
;;;54 case 16:
;;;55 Off = (x << 1) + y * pBMP->BytesPerLine;
;;;56 Value = *(pBMP->pData + Off) | (*(pBMP->pData + Off + 1) << 8);
;;;57 break;
;;;58 default:
;;;59 Value = 0;
;;;60 }
;;;61 return Value;
;;;62 }
00002e bd30 POP {r4,r5,pc}
|L1.48|
000030 2b08 CMP r3,#8 ;34
000032 d023 BEQ |L1.124|
000034 2b10 CMP r3,#0x10 ;34
000036 d127 BNE |L1.136|
000038 8883 LDRH r3,[r0,#4] ;55
00003a 6884 LDR r4,[r0,#8] ;55
00003c 4353 MULS r3,r2,r3 ;55
00003e eb030041 ADD r0,r3,r1,LSL #1 ;55
000042 4420 ADD r0,r0,r4 ;56
000044 8800 LDRH r0,[r0,#0] ;56
000046 bd30 POP {r4,r5,pc}
|L1.72|
000048 8885 LDRH r5,[r0,#4] ;36
00004a 6883 LDR r3,[r0,#8] ;36
00004c 4355 MULS r5,r2,r5 ;36
00004e eb0500d1 ADD r0,r5,r1,LSR #3 ;36
000052 f0010407 AND r4,r1,#7 ;38
000056 5c18 LDRB r0,[r3,r0] ;37
000058 f1c40107 RSB r1,r4,#7 ;38
00005c 40c8 LSRS r0,r0,r1 ;38
00005e f0000001 AND r0,r0,#1 ;38
|L1.98|
000062 bd30 POP {r4,r5,pc}
|L1.100|
000064 8883 LDRH r3,[r0,#4] ;46
000066 6884 LDR r4,[r0,#8] ;46
000068 4353 MULS r3,r2,r3 ;46
00006a eb030051 ADD r0,r3,r1,LSR #1 ;46
00006e 5c22 LDRB r2,[r4,r0] ;47
000070 07c9 LSLS r1,r1,#31 ;48
000072 f002000f AND r0,r2,#0xf ;48
000076 d1f4 BNE |L1.98|
000078 0910 LSRS r0,r2,#4 ;48
00007a bd30 POP {r4,r5,pc}
|L1.124|
00007c 8883 LDRH r3,[r0,#4] ;51
00007e 6884 LDR r4,[r0,#8] ;51
000080 fb021003 MLA r0,r2,r3,r1 ;51
000084 5c20 LDRB r0,[r4,r0] ;52
000086 bd30 POP {r4,r5,pc}
|L1.136|
000088 2000 MOVS r0,#0 ;59
00008a bd30 POP {r4,r5,pc}
;;;63
ENDP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?