📄 jdsample.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jdsample.o --depend=.\Obj\jdsample.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\jdsample.c]
THUMB
AREA ||i.fullsize_upsample||, CODE, READONLY, ALIGN=1
fullsize_upsample PROC
;;;157 METHODDEF(void)
;;;158 fullsize_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000 601a STR r2,[r3,#0]
;;;159 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;160 {
;;;161 GUI_USE_PARA(compptr);
;;;162 GUI_USE_PARA(cinfo);
;;;163 *output_data_ptr = input_data;
;;;164 }
000002 4770 BX lr
;;;165
ENDP
AREA ||i.h2v1_fancy_upsample||, CODE, READONLY, ALIGN=2
h2v1_fancy_upsample PROC
;;;311 METHODDEF(void)
;;;312 h2v1_fancy_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000 e92d41f0 PUSH {r4-r8,lr}
;;;313 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;314 {
000004 4680 MOV r8,r0
;;;315 JSAMPARRAY output_data = *output_data_ptr;
;;;316 register JSAMPROW inptr, outptr;
;;;317 register int invalue;
;;;318 register JDIMENSION colctr;
;;;319 int inrow;
;;;320
;;;321 for (inrow = 0; inrow < cinfo->max_v_samp_factor; inrow++) {
000006 2500 MOVS r5,#0
000008 f8d3e000 LDR lr,[r3,#0]
00000c e031 B |L2.114|
;;;322 inptr = input_data[inrow];
00000e bf00 NOP
|L2.16|
000010 f8520025 LDR r0,[r2,r5,LSL #2]
;;;323 outptr = output_data[inrow];
000014 f85e3025 LDR r3,[lr,r5,LSL #2]
;;;324 /* Special case for first column */
;;;325 invalue = GETJSAMPLE(*inptr++);
000018 7804 LDRB r4,[r0,#0]
;;;326 *outptr++ = (JSAMPLE) invalue;
00001a 701c STRB r4,[r3,#0]
;;;327 *outptr++ = (JSAMPLE) ((invalue * 3 + GETJSAMPLE(*inptr) + 2) >> 2);
00001c f8106f01 LDRB r6,[r0,#1]!
000020 eb040444 ADD r4,r4,r4,LSL #1
000024 1ca4 ADDS r4,r4,#2
000026 4434 ADD r4,r4,r6
000028 10a4 ASRS r4,r4,#2
00002a f8034f01 STRB r4,[r3,#1]!
;;;328
;;;329 for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) {
00002e 6a8c LDR r4,[r1,#0x28]
000030 1c5b ADDS r3,r3,#1 ;327
000032 1ea4 SUBS r4,r4,#2
000034 d012 BEQ |L2.92|
|L2.54|
;;;330 /* General case: 3/4 * nearer pixel + 1/4 * further pixel */
;;;331 invalue = GETJSAMPLE(*inptr++) * 3;
000036 7806 LDRB r6,[r0,#0]
;;;332 *outptr++ = (JSAMPLE) ((invalue + GETJSAMPLE(inptr[-2]) + 1) >> 2);
000038 f810cc01 LDRB r12,[r0,#-1]
00003c eb060646 ADD r6,r6,r6,LSL #1 ;331
000040 1c77 ADDS r7,r6,#1
000042 4467 ADD r7,r7,r12
000044 10bf ASRS r7,r7,#2
000046 701f STRB r7,[r3,#0]
;;;333 *outptr++ = (JSAMPLE) ((invalue + GETJSAMPLE(*inptr) + 2) >> 2);
000048 f8107f01 LDRB r7,[r0,#1]!
00004c 1cb6 ADDS r6,r6,#2
00004e 443e ADD r6,r6,r7
000050 10b6 ASRS r6,r6,#2
000052 f8036f01 STRB r6,[r3,#1]!
000056 1c5b ADDS r3,r3,#1
000058 1e64 SUBS r4,r4,#1 ;329
00005a d1ec BNE |L2.54|
|L2.92|
;;;334 }
;;;335
;;;336 /* Special case for last column */
;;;337 invalue = GETJSAMPLE(*inptr);
00005c 7804 LDRB r4,[r0,#0]
;;;338 *outptr++ = (JSAMPLE) ((invalue * 3 + GETJSAMPLE(inptr[-1]) + 1) >> 2);
00005e f8100c01 LDRB r0,[r0,#-1]
000062 eb040644 ADD r6,r4,r4,LSL #1
000066 1c76 ADDS r6,r6,#1
000068 4430 ADD r0,r0,r6
00006a 1080 ASRS r0,r0,#2
00006c 7018 STRB r0,[r3,#0]
;;;339 *outptr = (JSAMPLE) invalue;
00006e 705c STRB r4,[r3,#1]
000070 1c6d ADDS r5,r5,#1 ;321
|L2.114|
000072 f8d80138 LDR r0,[r8,#0x138] ;321
000076 42a8 CMP r0,r5 ;321
000078 dcca BGT |L2.16|
;;;340 }
;;;341 }
00007a e8bd81f0 POP {r4-r8,pc}
;;;342
ENDP
AREA ||i.h2v1_upsample||, CODE, READONLY, ALIGN=2
h2v1_upsample PROC
;;;238 METHODDEF(void)
;;;239 h2v1_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000 b5f0 PUSH {r4-r7,lr}
;;;240 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;241 {
;;;242 JSAMPARRAY output_data = *output_data_ptr;
;;;243 register JSAMPROW inptr, outptr;
;;;244 register JSAMPLE invalue;
;;;245 JSAMPROW outend;
;;;246 int inrow;
;;;247
;;;248 GUI_USE_PARA(compptr);
;;;249 for (inrow = 0; inrow < cinfo->max_v_samp_factor; inrow++) {
000002 2400 MOVS r4,#0
000004 681f LDR r7,[r3,#0]
000006 e010 B |L3.42|
|L3.8|
;;;250 inptr = input_data[inrow];
;;;251 outptr = output_data[inrow];
000008 f8571024 LDR r1,[r7,r4,LSL #2]
;;;252 outend = outptr + cinfo->output_width;
00000c 6f05 LDR r5,[r0,#0x70]
00000e f8523024 LDR r3,[r2,r4,LSL #2] ;250
000012 186e ADDS r6,r5,r1
;;;253 while (outptr < outend) {
000014 e006 B |L3.36|
;;;254 invalue = *inptr++; /* don't need GETJSAMPLE() here */
000016 bf00 NOP
|L3.24|
000018 f8135b01 LDRB r5,[r3],#1
;;;255 *outptr++ = invalue;
00001c 700d STRB r5,[r1,#0]
;;;256 *outptr++ = invalue;
00001e f8015f01 STRB r5,[r1,#1]!
000022 1c49 ADDS r1,r1,#1
|L3.36|
000024 42b1 CMP r1,r6 ;253
000026 d3f7 BCC |L3.24|
000028 1c64 ADDS r4,r4,#1 ;249
|L3.42|
00002a f8d01138 LDR r1,[r0,#0x138] ;249
00002e 42a1 CMP r1,r4 ;249
000030 dcea BGT |L3.8|
;;;257 }
;;;258 }
;;;259 }
000032 bdf0 POP {r4-r7,pc}
;;;260
ENDP
AREA ||i.h2v2_fancy_upsample||, CODE, READONLY, ALIGN=2
h2v2_fancy_upsample PROC
;;;352 METHODDEF(void)
;;;353 h2v2_fancy_upsample (j_decompress_ptr cinfo, jpeg_component_info * compptr,
000000 e92d4fff PUSH {r0-r11,lr}
;;;354 JSAMPARRAY input_data, JSAMPARRAY * output_data_ptr)
;;;355 {
;;;356 JSAMPARRAY output_data = *output_data_ptr;
;;;357 register JSAMPROW inptr0, inptr1, outptr;
;;;358 #if BITS_IN_JSAMPLE == 8
;;;359 register int thiscolsum, lastcolsum, nextcolsum;
;;;360 #else
;;;361 register INT32 thiscolsum, lastcolsum, nextcolsum;
;;;362 #endif
;;;363 register JDIMENSION colctr;
;;;364 int inrow, outrow, v;
;;;365
;;;366 inrow = outrow = 0;
000004 f04f0e00 MOV lr,#0
000008 4692 MOV r10,r2 ;355
00000a 46f0 MOV r8,lr
;;;367 while (outrow < cinfo->max_v_samp_factor) {
00000c f8d3b000 LDR r11,[r3,#0]
000010 e05b B |L4.202|
;;;368 for (v = 0; v < 2; v++) {
000012 bf00 NOP
|L4.20|
000014 f04f0c00 MOV r12,#0
;;;369 /* inptr0 points to nearest input row, inptr1 points to next nearest */
;;;370 inptr0 = input_data[inrow];
000018 eb0a0988 ADD r9,r10,r8,LSL #2
|L4.28|
00001c f85a3028 LDR r3,[r10,r8,LSL #2]
;;;371 if (v == 0) /* next nearest is row above */
000020 f1bc0f00 CMP r12,#0
000024 4648 MOV r0,r9
000026 d102 BNE |L4.46|
;;;372 inptr1 = input_data[inrow-1];
000028 f8504c04 LDR r4,[r0,#-4]
00002c e000 B |L4.48|
|L4.46|
;;;373 else /* next nearest is row below */
;;;374 inptr1 = input_data[inrow+1];
00002e 6844 LDR r4,[r0,#4]
|L4.48|
;;;375 outptr = output_data[outrow++];
;;;376
;;;377 /* Special case for first column */
;;;378 thiscolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
000030 7819 LDRB r1,[r3,#0]
000032 7822 LDRB r2,[r4,#0]
000034 eb010141 ADD r1,r1,r1,LSL #1
000038 188d ADDS r5,r1,r2
;;;379 nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
00003a f8131f01 LDRB r1,[r3,#1]!
00003e f8142f01 LDRB r2,[r4,#1]!
000042 eb010141 ADD r1,r1,r1,LSL #1
000046 4411 ADD r1,r1,r2
;;;380 *outptr++ = (JSAMPLE) ((thiscolsum * 4 + 8) >> 4);
000048 2208 MOVS r2,#8
00004a f85b002e LDR r0,[r11,lr,LSL #2] ;375
00004e eb020285 ADD r2,r2,r5,LSL #2
000052 1112 ASRS r2,r2,#4
000054 7002 STRB r2,[r0,#0]
;;;381 *outptr++ = (JSAMPLE) ((thiscolsum * 3 + nextcolsum + 7) >> 4);
000056 eb050245 ADD r2,r5,r5,LSL #1
00005a 440a ADD r2,r2,r1
00005c 1dd2 ADDS r2,r2,#7
00005e 1112 ASRS r2,r2,#4
000060 f8002f01 STRB r2,[r0,#1]!
;;;382 lastcolsum = thiscolsum; thiscolsum = nextcolsum;
;;;383
;;;384 for (colctr = compptr->downsampled_width - 2; colctr > 0; colctr--) {
000064 9a01 LDR r2,[sp,#4]
000066 1c5b ADDS r3,r3,#1 ;379
000068 6a92 LDR r2,[r2,#0x28]
00006a 1c64 ADDS r4,r4,#1 ;379
00006c 1c40 ADDS r0,r0,#1 ;381
00006e f10e0e01 ADD lr,lr,#1 ;375
000072 1e92 SUBS r2,r2,#2
000074 d017 BEQ |L4.166|
;;;385 /* General case: 3/4 * nearer pixel + 1/4 * further pixel in each */
;;;386 /* dimension, thus 9/16, 3/16, 3/16, 1/16 overall */
;;;387 nextcolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
000076 bf00 NOP
|L4.120|
000078 f8136b01 LDRB r6,[r3],#1
00007c f8147b01 LDRB r7,[r4],#1
000080 eb060646 ADD r6,r6,r6,LSL #1
000084 4437 ADD r7,r7,r6
;;;388 *outptr++ = (JSAMPLE) ((thiscolsum * 3 + lastcolsum + 8) >> 4);
000086 eb010641 ADD r6,r1,r1,LSL #1
00008a 4435 ADD r5,r5,r6
00008c 3508 ADDS r5,r5,#8
00008e 112d ASRS r5,r5,#4
000090 7005 STRB r5,[r0,#0]
;;;389 *outptr++ = (JSAMPLE) ((thiscolsum * 3 + nextcolsum + 7) >> 4);
000092 19f5 ADDS r5,r6,r7
000094 1ded ADDS r5,r5,#7
000096 112d ASRS r5,r5,#4
000098 f8005f01 STRB r5,[r0,#1]!
00009c 1c40 ADDS r0,r0,#1
;;;390 lastcolsum = thiscolsum; thiscolsum = nextcolsum;
00009e 460d MOV r5,r1
0000a0 4639 MOV r1,r7
0000a2 1e52 SUBS r2,r2,#1 ;384
0000a4 d1e8 BNE |L4.120|
|L4.166|
;;;391 }
;;;392
;;;393 /* Special case for last column */
;;;394 *outptr++ = (JSAMPLE) ((thiscolsum * 3 + lastcolsum + 8) >> 4);
0000a6 eb010241 ADD r2,r1,r1,LSL #1
0000aa 442a ADD r2,r2,r5
0000ac 3208 ADDS r2,r2,#8
0000ae 1112 ASRS r2,r2,#4
0000b0 7002 STRB r2,[r0,#0]
;;;395 *outptr = (JSAMPLE) ((thiscolsum * 4 + 7) >> 4);
0000b2 2207 MOVS r2,#7
0000b4 eb020181 ADD r1,r2,r1,LSL #2
0000b8 1109 ASRS r1,r1,#4
0000ba f10c0c01 ADD r12,r12,#1 ;368
0000be 7041 STRB r1,[r0,#1]
0000c0 f1bc0f02 CMP r12,#2 ;368
0000c4 dbaa BLT |L4.28|
;;;396 }
;;;397 inrow++;
0000c6 f1080801 ADD r8,r8,#1
|L4.202|
0000ca 9800 LDR r0,[sp,#0] ;367
0000cc f8d00138 LDR r0,[r0,#0x138] ;367
0000d0 4570 CMP r0,lr ;367
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -