⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 picdecode.cod

📁 平台PXA270, Mobile6.0 这是270的mobile6.0的bootloader
💻 COD
📖 第 1 页 / 共 2 页
字号:

  00000			 AREA	 |.pdata$$Pic_GetPalNum|, PDATA, SELECTION=5, ASSOC=|.text| { |Pic_GetPalNum| } ; comdat associative
|$T42774| DCD	|$L42773|
	DCD	0x40000d00
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |Pic_GetPalNum| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |Pic_GetPalNum| PROC

; 157  : {

  00000		 |$L42773|
  00000		 |$M42771|
  00000	e3500000	 cmp         r0, #0

; 158  :     UINT16 palnum=0;
; 159  :     PicHandle *handle = (PicHandle *)h;
; 160  :     if(h == NULL) return 0;

  00004	1a000001	 bne         |$L42607|
  00008		 |$L42770|
  00008	e3a00000	 mov         r0, #0

; 171  :     }
; 172  :     return palnum;
; 173  : }

  0000c	e12fff1e	 bx          lr
  00010		 |$L42607|

; 161  : 
; 162  :     switch(handle->head.gray){

  00010	e5d03005	 ldrb        r3, [r0, #5]
  00014	e3530001	 cmp         r3, #1
  00018	0a000003	 beq         |$L42613|
  0001c	e3530008	 cmp         r3, #8

; 168  :         break;
; 169  :     default:
; 170  :         palnum = 0;

  00020	1afffff8	 bne         |$L42770|

; 163  :     case 8:
; 164  :         palnum = handle->palnum;

  00024	e1d001bc	 ldrh        r0, [r0, #0x1C]

; 171  :     }
; 172  :     return palnum;
; 173  : }

  00028	e12fff1e	 bx          lr
  0002c		 |$L42613|

; 165  :         break;
; 166  :     case 1:
; 167  :         palnum = 0x100;

  0002c	e3a00c01	 mov         r0, #1, 24

; 171  :     }
; 172  :     return palnum;
; 173  : }

  00030	e12fff1e	 bx          lr
  00034		 |$M42772|

			 ENDP  ; |Pic_GetPalNum|

	EXPORT	|Pic_SetOutMode|

  00000			 AREA	 |.text| { |Pic_SetOutMode| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$Pic_SetOutMode|, PDATA, SELECTION=5, ASSOC=|.text| { |Pic_SetOutMode| } ; comdat associative
|$T42787| DCD	|$L42786|
	DCD	0x40000d00
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |Pic_SetOutMode| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |Pic_SetOutMode| PROC

; 181  : {

  00000		 |$L42786|
  00000		 |$M42784|
  00000	e3500000	 cmp         r0, #0

; 182  :     PicHandle *handle = (PicHandle *)h;
; 183  :     if(h == NULL) return FALSE;

  00004	0a000003	 beq         |$L42783|

; 184  :     if((mode !=0)&&(mode != 1)) return FALSE;

  00008	e3510000	 cmp         r1, #0
  0000c	0a000003	 beq         |$L42624|
  00010	e3510001	 cmp         r1, #1
  00014	0a000001	 beq         |$L42624|
  00018		 |$L42783|
  00018	e3a00000	 mov         r0, #0

; 188  : }

  0001c	e12fff1e	 bx          lr
  00020		 |$L42624|

; 185  :     if(handle->head.gray !=8) return TRUE;

  00020	e5d03005	 ldrb        r3, [r0, #5]
  00024	e3530008	 cmp         r3, #8

; 186  :     handle->mode = mode;

  00028	05801024	 streq       r1, [r0, #0x24]

; 187  :     return TRUE;

  0002c	e3a00001	 mov         r0, #1

; 188  : }

  00030	e12fff1e	 bx          lr
  00034		 |$M42785|

			 ENDP  ; |Pic_SetOutMode|

	EXPORT	|Pic_GetPal|

  00000			 AREA	 |.text| { |Pic_GetPal| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$Pic_GetPal|, PDATA, SELECTION=5, ASSOC=|.text| { |Pic_GetPal| } ; comdat associative
|$T42799| DCD	|$L42798|
	DCD	0x40003d01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |Pic_GetPal| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |Pic_GetPal| PROC

; 198  : {

  00000		 |$L42798|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M42796|
  00004	e1b02000	 movs        r2, r0

; 199  :     PicHandle *handle = (PicHandle *)h;
; 200  :     UINT16 paldata = 0;

  00008	e3a00000	 mov         r0, #0

; 201  : 
; 202  :     if(h == NULL) return 0;

  0000c	0a000034	 beq         |$L42644|

; 203  :     switch(handle->head.gray){

  00010	e5d23005	 ldrb        r3, [r2, #5]
  00014	e3530001	 cmp         r3, #1
  00018	0a00002c	 beq         |$L42643|
  0001c	e3530008	 cmp         r3, #8
  00020	1a000030	 bne         |$L42630|

; 204  :     case 8:
; 205  :         if(handle->mode == 0){

  00024	e5923024	 ldr         r3, [r2, #0x24]
  00028	e3530000	 cmp         r3, #0
  0002c	1a000011	 bne         |$L42641|

; 206  :             paldata = (((handle->ppal[index].red & 0xf8 ) << 8)     // Red
; 207  :                         | ((handle->ppal[index].green & 0xfc) << 3)     // Green
; 208  :                         | ((handle->ppal[index].blue) >> 3));   

  00030	e5923020	 ldr         r3, [r2, #0x20]
  00034	e0812081	 add         r2, r1, r1, lsl #1
  00038	e3a00cff	 mov         r0, #0xFF, 24
  0003c	e7f23003	 ldrb        r3, [r2, +r3]!
  00040	e38000f8	 orr         r0, r0, #0xF8
  00044	e5d21001	 ldrb        r1, [r2, #1]
  00048	e5d2e002	 ldrb        lr, [r2, #2]
  0004c	e0032000	 and         r2, r3, r0
  00050	e20130fc	 and         r3, r1, #0xFC
  00054	e1833282	 orr         r3, r3, r2, lsl #5
  00058	e1a03183	 mov         r3, r3, lsl #3
  0005c	e1a021ae	 mov         r2, lr, lsr #3
  00060	e1a01803	 mov         r1, r3, lsl #16
  00064	e1a03802	 mov         r3, r2, lsl #16
  00068	e1a03823	 mov         r3, r3, lsr #16
  0006c	e1830821	 orr         r0, r3, r1, lsr #16

; 219  :         break;
; 220  :     }
; 221  :     return paldata;
; 222  : }

  00070	e8bd4010	 ldmia       sp!, {r4, lr}
  00074	e12fff1e	 bx          lr
  00078		 |$L42641|

; 209  :         }
; 210  :         else{
; 211  :             paldata =0xff-(11*handle->ppal[index].red       // Red
; 212  :                 +59*handle->ppal[index].green                // Green
; 213  :                 +30*handle->ppal[index].blue)/100;

  00078	e592e020	 ldr         lr, [r2, #0x20]
  0007c	e0811081	 add         r1, r1, r1, lsl #1
  00080	e59f4068	 ldr         r4, [pc, #0x68]
  00084	e081300e	 add         r3, r1, lr
  00088	e5d32001	 ldrb        r2, [r3, #1]
  0008c	e5d30002	 ldrb        r0, [r3, #2]
  00090	e7d1e00e	 ldrb        lr, [r1, +lr]
  00094	e0623202	 rsb         r3, r2, r2, lsl #4
  00098	e0621103	 rsb         r1, r2, r3, lsl #2
  0009c	e0603200	 rsb         r3, r0, r0, lsl #4
  000a0	e08e210e	 add         r2, lr, lr, lsl #2
  000a4	e0811083	 add         r1, r1, r3, lsl #1
  000a8	e08e3082	 add         r3, lr, r2, lsl #1
  000ac	e0811003	 add         r1, r1, r3
  000b0	e0c32491	 smull       r2, r3, r1, r4
  000b4	e1a032c3	 mov         r3, r3, asr #5
  000b8	e0833fa3	 add         r3, r3, r3, lsr #31
  000bc	e26330ff	 rsb         r3, r3, #0xFF
  000c0	e1a00803	 mov         r0, r3, lsl #16
  000c4	e1a00820	 mov         r0, r0, lsr #16

; 219  :         break;
; 220  :     }
; 221  :     return paldata;
; 222  : }

  000c8	e8bd4010	 ldmia       sp!, {r4, lr}
  000cc	e12fff1e	 bx          lr
  000d0		 |$L42643|

; 214  :         }
; 215  :         break;
; 216  :     case 1:
; 217  :         if(index ==0) paldata = 0xffff;

  000d0	e3510000	 cmp         r1, #0
  000d4	03a00cff	 moveq       r0, #0xFF, 24
  000d8	038000ff	 orreq       r0, r0, #0xFF

; 219  :         break;
; 220  :     }
; 221  :     return paldata;
; 222  : }

  000dc	08bd4010	 ldmeqia     sp!, {r4, lr}
  000e0	012fff1e	 bxeq        lr
  000e4		 |$L42644|

; 218  :         else return paldata = 0x0;

  000e4	e3a00000	 mov         r0, #0
  000e8		 |$L42630|

; 219  :         break;
; 220  :     }
; 221  :     return paldata;
; 222  : }

  000e8	e8bd4010	 ldmia       sp!, {r4, lr}
  000ec	e12fff1e	 bx          lr
  000f0		 |$L42801|
  000f0	51eb851f	 DCD         0x51eb851f
  000f4		 |$M42797|

			 ENDP  ; |Pic_GetPal|

	EXPORT	|Pic_GetData|
	IMPORT	|__rt_udiv|

  00000			 AREA	 |.text| { |Pic_GetData| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$Pic_GetData|, PDATA, SELECTION=5, ASSOC=|.text| { |Pic_GetData| } ; comdat associative
|$T42820| DCD	|$L42819|
	DCD	0x40003f01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |Pic_GetData| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |Pic_GetData| PROC

; 235  : {

  00000		 |$L42819|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004		 |$M42817|
  00004	e1b04000	 movs        r4, r0

; 236  :     PicHandle *handle = (PicHandle *)h;
; 237  :     UINT8 data = 0;
; 238  :     UINT16 x,y,real_width;
; 239  :     if(h == NULL) return 0;

  00008	0a000022	 beq         |$L42815|

; 240  :     
; 241  :     x = index%(handle->output_width);

  0000c	e1d400ba	 ldrh        r0, [r4, #0xA]
  00010	eb000000	 bl          __rt_udiv

; 242  :     y = index/(handle->output_width);
; 243  :     //如果在实际图像范围外,输出值为缺省值
; 244  :     if((x<handle->left)||(x>=handle->right)||(y<handle->top)||(y>=handle->bottom)){

  00014	e1d471b2	 ldrh        r7, [r4, #0x12]
  00018	e1a06801	 mov         r6, r1, lsl #16
  0001c	e1a06826	 mov         r6, r6, lsr #16
  00020	e1a01800	 mov         r1, r0, lsl #16
  00024	e1560007	 cmp         r6, r7
  00028	e1a01821	 mov         r1, r1, lsr #16
  0002c	3a00002c	 bcc         |$L42660|
  00030	e1d431b4	 ldrh        r3, [r4, #0x14]
  00034	e1560003	 cmp         r6, r3
  00038	2a000029	 bcs         |$L42660|
  0003c	e1d4e0be	 ldrh        lr, [r4, #0xE]
  00040	e151000e	 cmp         r1, lr
  00044	3a000026	 bcc         |$L42660|
  00048	e1d431b0	 ldrh        r3, [r4, #0x10]
  0004c	e1510003	 cmp         r1, r3
  00050	2a000023	 bcs         |$L42660|

; 247  :         }
; 248  :     
; 249  :     real_width = handle->head.w;
; 250  :     //如果为1bit图时,width必须为8倍数,不足后面补零
; 251  :     if(handle->head.gray==1) real_width = (real_width+7)&0xfff8;

  00054	e5d40005	 ldrb        r0, [r4, #5]
  00058	e5d42006	 ldrb        r2, [r4, #6]
  0005c	e5d43007	 ldrb        r3, [r4, #7]
  00060	e3500001	 cmp         r0, #1
  00064	e1825403	 orr         r5, r2, r3, lsl #8
  00068	03a02cff	 moveq       r2, #0xFF, 24
  0006c	038220f8	 orreq       r2, r2, #0xF8
  00070	02853007	 addeq       r3, r5, #7
  00074	00035002	 andeq       r5, r3, r2

; 252  : 
; 253  :     //将index映射到实际图像坐标
; 254  :     index = (x - handle->left)+(y - handle->top)*real_width;

  00078	e041300e	 sub         r3, r1, lr
  0007c	e0020593	 mul         r2, r3, r5

; 255  :     switch(handle->head.gray){

  00080	e3500001	 cmp         r0, #1
  00084	e0423007	 sub         r3, r2, r7
  00088	e0831006	 add         r1, r3, r6
  0008c	0a000008	 beq         |$L42669|
  00090	e3500008	 cmp         r0, #8
  00094	0a000002	 beq         |$L42668|
  00098		 |$L42815|

; 269  :         }
; 270  :         break;
; 271  :     }
; 272  :     return 0;

  00098	e3a00000	 mov         r0, #0

; 273  : }

  0009c	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000a0	e12fff1e	 bx          lr
  000a4		 |$L42668|

; 256  :     case 8:
; 257  :         return handle->pdata[index];

  000a4	e5943028	 ldr         r3, [r4, #0x28]
  000a8	e7d30001	 ldrb        r0, [r3, +r1]

; 273  : }

  000ac	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000b0	e12fff1e	 bx          lr
  000b4		 |$L42669|

; 258  :         break;
; 259  :     case 1:
; 260  :         {
; 261  :             UINT32 byteindex = index>>3;
; 262  :             UINT8 offset=index-(byteindex<<3);
; 263  :             //如果字节内逆序排列
; 264  :             if(handle->byteorder==0) offset = 7-offset;

  000b4	e5942018	 ldr         r2, [r4, #0x18]
  000b8	e1a001a1	 mov         r0, r1, lsr #3
  000bc	e0413180	 sub         r3, r1, r0, lsl #3
  000c0	e20310ff	 and         r1, r3, #0xFF
  000c4	e3520000	 cmp         r2, #0
  000c8	02613007	 rsbeq       r3, r1, #7
  000cc	020310ff	 andeq       r1, r3, #0xFF

; 265  :             if(((handle->pdata[byteindex])>>(offset))&0x1)

  000d0	e5943028	 ldr         r3, [r4, #0x28]
  000d4	e7d33000	 ldrb        r3, [r3, +r0]
  000d8	e1a03133	 mov         r3, r3, lsr r1
  000dc	e3130001	 tst         r3, #1

; 266  :                 return 0xff;
; 267  :             else 
; 268  :                 return 0x0;

  000e0	ea000001	 b           |$L42816|
  000e4		 |$L42660|

; 245  :         if(handle->mode == 0) return 0;

  000e4	e5943024	 ldr         r3, [r4, #0x24]
  000e8	e3530000	 cmp         r3, #0
  000ec		 |$L42816|
  000ec	0affffe9	 beq         |$L42815|

; 246  :         else return 0xff;

  000f0	e3a000ff	 mov         r0, #0xFF

; 273  : }

  000f4	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000f8	e12fff1e	 bx          lr
  000fc		 |$M42818|

			 ENDP  ; |Pic_GetData|

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -