📄 jquant1.txt
字号:
000080 1c7a ADDS r2,r7,#1
000082 4617 MOV r7,r2
000084 f1a90301 SUB r3,r9,#1
000088 4631 MOV r1,r6
00008a 9800 LDR r0,[sp,#0]
00008c f7fffffe BL largest_input_value
|L4.144|
000090 4285 CMP r5,r0 ;379
000092 dcf5 BGT |L4.128|
;;;381 /* premultiply so that no multiplication needed in main processing */
;;;382 indexptr[j] = (JSAMPLE) (val * blksize);
000094 fb07f10a MUL r1,r7,r10
000098 1c6a ADDS r2,r5,#1 ;378
00009a 5561 STRB r1,[r4,r5]
00009c 4615 MOV r5,r2 ;378
00009e 2aff CMP r2,#0xff ;378
0000a0 ddf6 BLE |L4.144|
;;;383 }
;;;384 /* Pad at both ends if necessary */
;;;385 if (pad)
0000a2 f1bb0f00 CMP r11,#0
0000a6 d00b BEQ |L4.192|
;;;386 for (j = 1; j <= MAXJSAMPLE; j++) {
0000a8 2001 MOVS r0,#1
|L4.170|
;;;387 indexptr[-j] = indexptr[0];
0000aa 1a23 SUBS r3,r4,r0
0000ac 7822 LDRB r2,[r4,#0]
;;;388 indexptr[MAXJSAMPLE+j] = indexptr[MAXJSAMPLE];
0000ae 1821 ADDS r1,r4,r0
0000b0 701a STRB r2,[r3,#0] ;387
0000b2 f89420ff LDRB r2,[r4,#0xff]
0000b6 1c40 ADDS r0,r0,#1 ;386
0000b8 28ff CMP r0,#0xff ;386
0000ba f88120ff STRB r2,[r1,#0xff]
0000be ddf4 BLE |L4.170|
|L4.192|
0000c0 1c76 ADDS r6,r6,#1 ;364
|L4.194|
0000c2 9800 LDR r0,[sp,#0] ;364
0000c4 6f80 LDR r0,[r0,#0x78] ;364
0000c6 42b0 CMP r0,r6 ;364
0000c8 dcbc BGT |L4.68|
;;;389 }
;;;390 }
;;;391 }
0000ca e8bd8ff8 POP {r3-r11,pc}
;;;392
ENDP
AREA ||i.create_colormap||, CODE, READONLY, ALIGN=1
create_colormap PROC
;;;276 LOCAL(void)
;;;277 create_colormap (j_decompress_ptr cinfo)
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;278 {
;;;279 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;280 JSAMPARRAY colormap; /* Created colormap */
;;;281 int total_colors; /* Number of distinct output colors */
;;;282 int i,j,k, nci, blksize, blkdist, ptr, val;
;;;283
;;;284 /* Select number of colors for each component */
;;;285 total_colors = select_ncolors(cinfo, cquantize->Ncolors);
000004 f8d0b1cc LDR r11,[r0,#0x1cc]
000008 4680 MOV r8,r0 ;278
00000a f10b0120 ADD r1,r11,#0x20
00000e f7fffffe BL select_ncolors
000012 4681 MOV r9,r0
;;;286
;;;287 /* Report selected color counts */
;;;288 if (cinfo->out_color_components == 3)
000014 f8d80078 LDR r0,[r8,#0x78]
000018 2803 CMP r0,#3
00001a d111 BNE |L5.64|
;;;289 TRACEMS4(cinfo, 1, JTRC_QUANT_3_NCOLORS,
00001c f8d80000 LDR r0,[r8,#0]
000020 f8c09018 STR r9,[r0,#0x18]
000024 f8db1020 LDR r1,[r11,#0x20]
000028 61c1 STR r1,[r0,#0x1c]
00002a f8db1024 LDR r1,[r11,#0x24]
00002e 6201 STR r1,[r0,#0x20]
000030 f8db1028 LDR r1,[r11,#0x28]
000034 6241 STR r1,[r0,#0x24]
000036 f8d80000 LDR r0,[r8,#0]
00003a 215e MOVS r1,#0x5e
00003c 6141 STR r1,[r0,#0x14]
00003e e007 B |L5.80|
|L5.64|
;;;290 total_colors, cquantize->Ncolors[0],
;;;291 cquantize->Ncolors[1], cquantize->Ncolors[2]);
;;;292 else
;;;293 TRACEMS1(cinfo, 1, JTRC_QUANT_NCOLORS, total_colors);
000040 f8d80000 LDR r0,[r8,#0]
000044 215f MOVS r1,#0x5f
000046 6141 STR r1,[r0,#0x14]
000048 f8d80000 LDR r0,[r8,#0]
00004c f8c09018 STR r9,[r0,#0x18]
|L5.80|
000050 f8d80000 LDR r0,[r8,#0]
000054 2101 MOVS r1,#1
000056 6842 LDR r2,[r0,#4]
000058 4640 MOV r0,r8
00005a 4790 BLX r2
;;;294
;;;295 /* Allocate and fill in the colormap. */
;;;296 /* The colors are ordered in the map in standard row-major order, */
;;;297 /* i.e. rightmost (highest-indexed) color changes most rapidly. */
;;;298
;;;299 colormap = (*cinfo->mem->alloc_sarray)
00005c f8d80004 LDR r0,[r8,#4]
000060 f8d83078 LDR r3,[r8,#0x78]
000064 6884 LDR r4,[r0,#8]
000066 464a MOV r2,r9
000068 2101 MOVS r1,#1
00006a 4640 MOV r0,r8
00006c 47a0 BLX r4
;;;300 ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;301 (JDIMENSION) total_colors, (JDIMENSION) cinfo->out_color_components);
;;;302
;;;303 /* blksize is number of adjacent repeated entries for a component */
;;;304 /* blkdist is distance between groups of identical entries for a component */
;;;305 blkdist = total_colors;
00006e 46ca MOV r10,r9
;;;306
;;;307 for (i = 0; i < cinfo->out_color_components; i++) {
000070 2400 MOVS r4,#0
000072 e028 B |L5.198|
|L5.116|
;;;308 /* fill in colormap entries for i'th color component */
;;;309 nci = cquantize->Ncolors[i]; /* # of distinct values for this color */
000074 eb0b0184 ADD r1,r11,r4,LSL #2
;;;310 blksize = blkdist / nci;
000078 f8d1e020 LDR lr,[r1,#0x20]
;;;311 for (j = 0; j < nci; j++) {
00007c 2300 MOVS r3,#0
00007e fb9af5fe SDIV r5,r10,lr ;310
000082 e01c B |L5.190|
|L5.132|
;;;312 /* Compute j'th output value (out of nci) for component */
;;;313 val = output_value(cinfo, i, j, nci-1);
000084 f1ae0101 SUB r1,lr,#1
000088 ebc32203 RSB r2,r3,r3,LSL #8
00008c eb0176d1 ADD r6,r1,r1,LSR #31
000090 eb020266 ADD r2,r2,r6,ASR #1
000094 fb92f1f1 SDIV r1,r2,r1
;;;314 /* Fill in all colormap entries that have this value of this component */
;;;315 for (ptr = j * blksize; ptr < total_colors; ptr += blkdist) {
000098 fb03f205 MUL r2,r3,r5
;;;316 /* fill in blksize entries beginning at ptr */
;;;317 for (k = 0; k < blksize; k++)
;;;318 colormap[i][ptr+k] = (JSAMPLE) val;
00009c b2ce UXTB r6,r1
00009e e00b B |L5.184|
|L5.160|
0000a0 2100 MOVS r1,#0 ;317
0000a2 e006 B |L5.178|
|L5.164|
0000a4 f8507024 LDR r7,[r0,r4,LSL #2]
0000a8 eb020c01 ADD r12,r2,r1
0000ac f807600c STRB r6,[r7,r12]
0000b0 1c49 ADDS r1,r1,#1 ;317
|L5.178|
0000b2 42a9 CMP r1,r5 ;317
0000b4 dbf6 BLT |L5.164|
0000b6 4452 ADD r2,r2,r10 ;315
|L5.184|
0000b8 454a CMP r2,r9 ;315
0000ba dbf1 BLT |L5.160|
0000bc 1c5b ADDS r3,r3,#1 ;311
|L5.190|
0000be 4573 CMP r3,lr ;311
0000c0 dbe0 BLT |L5.132|
;;;319 }
;;;320 }
;;;321 blkdist = blksize; /* blksize of this color is blkdist of next */
0000c2 46aa MOV r10,r5
0000c4 1c64 ADDS r4,r4,#1 ;307
|L5.198|
0000c6 f8d81078 LDR r1,[r8,#0x78] ;307
0000ca 42a1 CMP r1,r4 ;307
0000cc dcd2 BGT |L5.116|
;;;322 }
;;;323
;;;324 /* Save the colormap in private storage,
;;;325 * where it will survive color quantization mode changes.
;;;326 */
;;;327 cquantize->sv_colormap = colormap;
;;;328 cquantize->sv_actual = total_colors;
;;;329 }
0000ce e9cb0904 STRD r0,r9,[r11,#0x10]
0000d2 e8bd9ff0 POP {r4-r12,pc}
;;;330
ENDP
AREA ||i.create_odither_tables||, CODE, READONLY, ALIGN=2
create_odither_tables PROC
;;;435 LOCAL(void)
;;;436 create_odither_tables (j_decompress_ptr cinfo)
000000 e92d47f0 PUSH {r4-r10,lr}
;;;437 {
000004 4680 MOV r8,r0
;;;438 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;439 ODITHER_MATRIX_PTR odither;
;;;440 int i, j, nci;
;;;441
;;;442 for (i = 0; i < cinfo->out_color_components; i++) {
000006 2400 MOVS r4,#0
000008 f8d051cc LDR r5,[r0,#0x1cc]
00000c e046 B |L6.156|
;;;443 nci = cquantize->Ncolors[i]; /* # of distinct values for this color */
00000e bf00 NOP
|L6.16|
000010 eb050084 ADD r0,r5,r4,LSL #2
000014 4681 MOV r9,r0
;;;444 odither = NULL; /* search for matching prior component */
000016 6a06 LDR r6,[r0,#0x20]
000018 2000 MOVS r0,#0
;;;445 for (j = 0; j < i; j++) {
00001a 4601 MOV r1,r0
00001c e00a B |L6.52|
;;;446 if (nci == cquantize->Ncolors[j]) {
00001e bf00 NOP
|L6.32|
000020 eb050281 ADD r2,r5,r1,LSL #2
000024 6a12 LDR r2,[r2,#0x20]
000026 42b2 CMP r2,r6
000028 d103 BNE |L6.50|
;;;447 odither = cquantize->odither[j];
00002a eb050081 ADD r0,r5,r1,LSL #2
00002e 6b40 LDR r0,[r0,#0x34]
;;;448 break;
000030 e002 B |L6.56|
|L6.50|
000032 1c49 ADDS r1,r1,#1 ;445
|L6.52|
000034 42a1 CMP r1,r4 ;445
000036 dbf3 BLT |L6.32|
|L6.56|
;;;449 }
;;;450 }
;;;451 if (odither == NULL) /* need a new table? */
000038 bb68 CBNZ r0,|L6.150|
00003a f8d80004 LDR r0,[r8,#4]
00003e f44f6280 MOV r2,#0x400
000042 6803 LDR r3,[r0,#0]
000044 2101 MOVS r1,#1
000046 4640 MOV r0,r8
000048 4798 BLX r3
00004a ea4f2646 LSL r6,r6,#9
00004e f8dfa058 LDR r10,|L6.168|
000052 f5a67600 SUB r6,r6,#0x200
000056 2200 MOVS r2,#0
000058 f04f0cff MOV r12,#0xff
|L6.92|
00005c 2100 MOVS r1,#0
00005e eb0a1e02 ADD lr,r10,r2,LSL #4
000062 eb001782 ADD r7,r0,r2,LSL #6
000066 bf00 NOP
|L6.104|
000068 f81e3001 LDRB r3,[lr,r1]
00006c 425b RSBS r3,r3,#0
00006e eb0c0343 ADD r3,r12,r3,LSL #1
000072 ebd32303 RSBS r3,r3,r3,LSL #8
000076 d504 BPL |L6.130|
000078 425b RSBS r3,r3,#0
00007a fb93f3f6 SDIV r3,r3,r6
00007e 425b RSBS r3,r3,#0
000080 e001 B |L6.134|
|L6.130|
000082 fb93f3f6 SDIV r3,r3,r6
|L6.134|
000086 f8473021 STR r3,[r7,r1,LSL #2]
00008a 1c49 ADDS r1,r1,#1
00008c 2910 CMP r1,#0x10
00008e dbeb BLT |L6.104|
000090 1c52 ADDS r2,r2,#1
000092 2a10 CMP r2,#0x10
000094 dbe2 BLT |L6.92|
|L6.150|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -