📄 jquant1.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jquant1.o --depend=.\Obj\jquant1.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\JPEG\jquant1.c]
THUMB
AREA ||i.alloc_fs_workspace||, CODE, READONLY, ALIGN=1
alloc_fs_workspace PROC
;;;725 LOCAL(void)
;;;726 alloc_fs_workspace (j_decompress_ptr cinfo)
000000 e92d41f0 PUSH {r4-r8,lr}
;;;727 {
000004 4605 MOV r5,r0
;;;728 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;729 size_t arraysize;
;;;730 int i;
;;;731
;;;732 arraysize = (size_t) ((cinfo->output_width + 2) * SIZEOF(FSERROR));
000006 f8d061cc LDR r6,[r0,#0x1cc]
00000a 6f00 LDR r0,[r0,#0x70]
;;;733 for (i = 0; i < cinfo->out_color_components; i++) {
00000c 2400 MOVS r4,#0
00000e 0047 LSLS r7,r0,#1 ;732
000010 1d3f ADDS r7,r7,#4 ;732
000012 e009 B |L1.40|
|L1.20|
;;;734 cquantize->fserrors[i] = (FSERRPTR)
000014 6868 LDR r0,[r5,#4]
000016 463a MOV r2,r7
000018 6843 LDR r3,[r0,#4]
00001a 2101 MOVS r1,#1
00001c 4628 MOV r0,r5
00001e 4798 BLX r3
000020 eb060184 ADD r1,r6,r4,LSL #2
000024 1c64 ADDS r4,r4,#1 ;733
000026 6448 STR r0,[r1,#0x44] ;733
|L1.40|
000028 6fa8 LDR r0,[r5,#0x78] ;733
00002a 42a0 CMP r0,r4 ;733
00002c dcf2 BGT |L1.20|
;;;735 (*cinfo->mem->alloc_large)((j_common_ptr) cinfo, JPOOL_IMAGE, arraysize);
;;;736 }
;;;737 }
00002e e8bd81f0 POP {r4-r8,pc}
;;;738
ENDP
AREA ||i.color_quantize||, CODE, READONLY, ALIGN=2
color_quantize PROC
;;;462 METHODDEF(void)
;;;463 color_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
000000 e92d4ff0 PUSH {r4-r11,lr}
;;;464 JSAMPARRAY output_buf, int num_rows)
;;;465 /* General case, no dithering */
;;;466 {
000004 468b MOV r11,r1
;;;467 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;468 JSAMPARRAY colorindex = cquantize->colorindex;
000006 f8d011cc LDR r1,[r0,#0x1cc]
00000a 4691 MOV r9,r2 ;466
00000c 469a MOV r10,r3 ;466
;;;469 register int pixcode, ci;
;;;470 register JSAMPROW ptrin, ptrout;
;;;471 int row;
;;;472 JDIMENSION col;
;;;473 JDIMENSION width = cinfo->output_width;
00000e f8d1e018 LDR lr,[r1,#0x18]
;;;474 register int nc = cinfo->out_color_components;
;;;475
;;;476 for (row = 0; row < num_rows; row++) {
000012 2400 MOVS r4,#0
000014 f8d0c078 LDR r12,[r0,#0x78]
000018 f8d08070 LDR r8,[r0,#0x70]
00001c e018 B |L2.80|
;;;477 ptrin = input_buf[row];
00001e bf00 NOP
|L2.32|
000020 f85b2024 LDR r2,[r11,r4,LSL #2]
;;;478 ptrout = output_buf[row];
000024 f8597024 LDR r7,[r9,r4,LSL #2]
;;;479 for (col = width; col > 0; col--) {
000028 ea5f0308 MOVS r3,r8
00002c d00f BEQ |L2.78|
|L2.46|
;;;480 pixcode = 0;
00002e 2100 MOVS r1,#0
;;;481 for (ci = 0; ci < nc; ci++) {
000030 4608 MOV r0,r1
000032 e006 B |L2.66|
|L2.52|
;;;482 pixcode += GETJSAMPLE(colorindex[ci][GETJSAMPLE(*ptrin++)]);
000034 f85e5020 LDR r5,[lr,r0,LSL #2]
000038 f8126b01 LDRB r6,[r2],#1
00003c 1c40 ADDS r0,r0,#1 ;481
00003e 5dad LDRB r5,[r5,r6]
000040 4429 ADD r1,r1,r5
|L2.66|
000042 4560 CMP r0,r12 ;481
000044 dbf6 BLT |L2.52|
;;;483 }
;;;484 *ptrout++ = (JSAMPLE) pixcode;
000046 f8071b01 STRB r1,[r7],#1
00004a 1e5b SUBS r3,r3,#1 ;479
00004c d1ef BNE |L2.46|
|L2.78|
00004e 1c64 ADDS r4,r4,#1 ;476
|L2.80|
000050 4554 CMP r4,r10 ;476
000052 dbe5 BLT |L2.32|
;;;485 }
;;;486 }
;;;487 }
000054 e8bd8ff0 POP {r4-r11,pc}
;;;488
ENDP
AREA ||i.color_quantize3||, CODE, READONLY, ALIGN=1
color_quantize3 PROC
;;;490 METHODDEF(void)
;;;491 color_quantize3 (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
000000 e92d4ff0 PUSH {r4-r11,lr}
;;;492 JSAMPARRAY output_buf, int num_rows)
;;;493 /* Fast path for out_color_components==3, no dithering */
;;;494 {
000004 468b MOV r11,r1
;;;495 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;496 register int pixcode;
;;;497 register JSAMPROW ptrin, ptrout;
;;;498 JSAMPROW colorindex0 = cquantize->colorindex[0];
000006 f8d011cc LDR r1,[r0,#0x1cc]
00000a 4692 MOV r10,r2 ;494
00000c 6989 LDR r1,[r1,#0x18]
00000e 4699 MOV r9,r3 ;494
;;;499 JSAMPROW colorindex1 = cquantize->colorindex[1];
;;;500 JSAMPROW colorindex2 = cquantize->colorindex[2];
;;;501 int row;
;;;502 JDIMENSION col;
;;;503 JDIMENSION width = cinfo->output_width;
000010 e9d14e01 LDRD r4,lr,[r1,#4]
;;;504
;;;505 for (row = 0; row < num_rows; row++) {
000014 2200 MOVS r2,#0
000016 f8d08070 LDR r8,[r0,#0x70] ;498
00001a f8d1c000 LDR r12,[r1,#0]
00001e e017 B |L3.80|
|L3.32|
;;;506 ptrin = input_buf[row];
000020 f85b3022 LDR r3,[r11,r2,LSL #2]
;;;507 ptrout = output_buf[row];
000024 f85a1022 LDR r1,[r10,r2,LSL #2]
;;;508 for (col = width; col > 0; col--) {
000028 ea5f0008 MOVS r0,r8
00002c d00f BEQ |L3.78|
|L3.46|
;;;509 pixcode = GETJSAMPLE(colorindex0[GETJSAMPLE(*ptrin++)]);
00002e 781e LDRB r6,[r3,#0]
;;;510 pixcode += GETJSAMPLE(colorindex1[GETJSAMPLE(*ptrin++)]);
000030 785d LDRB r5,[r3,#1]
000032 f81c6006 LDRB r6,[r12,r6] ;509
000036 5d65 LDRB r5,[r4,r5]
;;;511 pixcode += GETJSAMPLE(colorindex2[GETJSAMPLE(*ptrin++)]);
000038 f8137f02 LDRB r7,[r3,#2]!
00003c 4435 ADD r5,r5,r6 ;510
00003e f81e6007 LDRB r6,[lr,r7]
000042 1c5b ADDS r3,r3,#1
000044 4435 ADD r5,r5,r6
;;;512 *ptrout++ = (JSAMPLE) pixcode;
000046 f8015b01 STRB r5,[r1],#1
00004a 1e40 SUBS r0,r0,#1 ;508
00004c d1ef BNE |L3.46|
|L3.78|
00004e 1c52 ADDS r2,r2,#1 ;505
|L3.80|
000050 454a CMP r2,r9 ;505
000052 dbe5 BLT |L3.32|
;;;513 }
;;;514 }
;;;515 }
000054 e8bd8ff0 POP {r4-r11,pc}
;;;516
ENDP
AREA ||i.create_colorindex||, CODE, READONLY, ALIGN=2
create_colorindex PROC
;;;336 LOCAL(void)
;;;337 create_colorindex (j_decompress_ptr cinfo)
000000 e92d4ff1 PUSH {r0,r4-r11,lr}
;;;338 {
;;;339 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;340 JSAMPROW indexptr;
;;;341 int i,j,k, nci, blksize, val, pad;
;;;342
;;;343 /* For ordered dither, we pad the color index tables by MAXJSAMPLE in
;;;344 * each direction (input index values can be -MAXJSAMPLE .. 2*MAXJSAMPLE).
;;;345 * This is not necessary in the other dithering modes. However, we
;;;346 * flag whether it was done in case user changes dithering mode.
;;;347 */
;;;348 if (cinfo->dither_mode == JDITHER_ORDERED) {
000004 9900 LDR r1,[sp,#0]
000006 9800 LDR r0,[sp,#0] ;339
000008 f8911058 LDRB r1,[r1,#0x58]
00000c f8d081cc LDR r8,[r0,#0x1cc]
000010 2901 CMP r1,#1
000012 d102 BNE |L4.26|
;;;349 pad = MAXJSAMPLE*2;
000014 f44f7bff MOV r11,#0x1fe
;;;350 cquantize->is_padded = TRUE;
000018 e002 B |L4.32|
|L4.26|
;;;351 } else {
;;;352 pad = 0;
00001a f04f0b00 MOV r11,#0
;;;353 cquantize->is_padded = FALSE;
00001e 4659 MOV r1,r11
|L4.32|
;;;354 }
;;;355
;;;356 cquantize->colorindex = (*cinfo->mem->alloc_sarray)
000020 f8c8101c STR r1,[r8,#0x1c]
000024 9800 LDR r0,[sp,#0]
000026 f50b7280 ADD r2,r11,#0x100
00002a 6f83 LDR r3,[r0,#0x78]
00002c 6840 LDR r0,[r0,#4]
00002e 2101 MOVS r1,#1
000030 6884 LDR r4,[r0,#8]
000032 9800 LDR r0,[sp,#0]
000034 47a0 BLX r4
;;;357 ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;358 (JDIMENSION) (MAXJSAMPLE+1 + pad),
;;;359 (JDIMENSION) cinfo->out_color_components);
;;;360
;;;361 /* blksize is number of adjacent repeated entries for a component */
;;;362 blksize = cquantize->sv_actual;
000036 f8c80018 STR r0,[r8,#0x18]
;;;363
;;;364 for (i = 0; i < cinfo->out_color_components; i++) {
00003a 2600 MOVS r6,#0
00003c f8d8a014 LDR r10,[r8,#0x14]
000040 e03f B |L4.194|
;;;365 /* fill in colorindex entries for i'th color component */
;;;366 nci = cquantize->Ncolors[i]; /* # of distinct values for this color */
000042 bf00 NOP
|L4.68|
000044 eb080086 ADD r0,r8,r6,LSL #2
;;;367 blksize = blksize / nci;
000048 f8d09020 LDR r9,[r0,#0x20]
;;;368
;;;369 /* adjust colorindex pointers to provide padding at negative indexes. */
;;;370 if (pad)
00004c f1bb0f00 CMP r11,#0
000050 fb9afaf9 SDIV r10,r10,r9 ;367
000054 d006 BEQ |L4.100|
;;;371 cquantize->colorindex[i] += MAXJSAMPLE;
000056 f8d80018 LDR r0,[r8,#0x18]
00005a f8501026 LDR r1,[r0,r6,LSL #2]
00005e 31ff ADDS r1,r1,#0xff
000060 f8401026 STR r1,[r0,r6,LSL #2]
|L4.100|
;;;372
;;;373 /* in loop, val = index of current output value, */
;;;374 /* and k = largest j that maps to current val */
;;;375 indexptr = cquantize->colorindex[i];
000064 f8d80018 LDR r0,[r8,#0x18]
;;;376 val = 0;
000068 2700 MOVS r7,#0
00006a f8504026 LDR r4,[r0,r6,LSL #2] ;375
;;;377 k = largest_input_value(cinfo, i, 0, nci-1);
00006e f1a90301 SUB r3,r9,#1
000072 463a MOV r2,r7
000074 4631 MOV r1,r6
000076 9800 LDR r0,[sp,#0]
000078 f7fffffe BL largest_input_value
;;;378 for (j = 0; j <= MAXJSAMPLE; j++) {
00007c 2500 MOVS r5,#0
00007e e007 B |L4.144|
|L4.128|
;;;379 while (j > k) /* advance val if past boundary */
;;;380 k = largest_input_value(cinfo, i, ++val, nci-1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -