📄 jdinput.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jdinput.o --depend=.\Obj\jdinput.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\jdinput.c]
THUMB
AREA ||i.consume_markers||, CODE, READONLY, ALIGN=1
consume_markers PROC
;;;287 METHODDEF(int)
;;;288 consume_markers (j_decompress_ptr cinfo)
000000 b570 PUSH {r4-r6,lr}
;;;289 {
;;;290 my_inputctl_ptr inputctl = (my_inputctl_ptr) cinfo->inputctl;
;;;291 int val;
;;;292
;;;293 if (inputctl->pub.eoi_reached) /* After hitting EOI, read no further */
000002 f8d051b4 LDR r5,[r0,#0x1b4]
000006 4604 MOV r4,r0 ;289
000008 6968 LDR r0,[r5,#0x14]
00000a b108 CBZ r0,|L1.16|
;;;294 return JPEG_REACHED_EOI;
00000c 2002 MOVS r0,#2
;;;295
;;;296 val = (*cinfo->marker->read_markers) (cinfo);
;;;297
;;;298 switch (val) {
;;;299 case JPEG_REACHED_SOS: /* Found SOS */
;;;300 if (inputctl->inheaders) { /* 1st SOS */
;;;301 initial_setup(cinfo);
;;;302 inputctl->inheaders = FALSE;
;;;303 /* Note: start_input_pass must be called by jdmaster.c
;;;304 * before any more input can be consumed. jdapimin.c is
;;;305 * responsible for enforcing this sequencing.
;;;306 */
;;;307 } else { /* 2nd or later SOS marker */
;;;308 if (! inputctl->pub.has_multiple_scans)
;;;309 ERREXIT(cinfo, JERR_EOI_EXPECTED); /* Oops, I wasn't expecting this! */
;;;310 start_input_pass(cinfo);
;;;311 }
;;;312 break;
;;;313 case JPEG_REACHED_EOI: /* Found EOI */
;;;314 inputctl->pub.eoi_reached = TRUE;
;;;315 if (inputctl->inheaders) { /* Tables-only datastream, apparently */
;;;316 if (cinfo->marker->saw_SOF)
;;;317 ERREXIT(cinfo, JERR_SOF_NO_SOS);
;;;318 } else {
;;;319 /* Prevent infinite loop in coef ctlr's decompress_data routine
;;;320 * if user set output_scan_number larger than number of scans.
;;;321 */
;;;322 if (cinfo->output_scan_number > cinfo->input_scan_number)
;;;323 cinfo->output_scan_number = cinfo->input_scan_number;
;;;324 }
;;;325 break;
;;;326 case JPEG_SUSPENDED:
;;;327 break;
;;;328 }
;;;329
;;;330 return val;
;;;331 }
00000e bd70 POP {r4-r6,pc}
|L1.16|
000010 f8d401b8 LDR r0,[r4,#0x1b8] ;296
000014 6841 LDR r1,[r0,#4] ;296
000016 4620 MOV r0,r4 ;296
000018 4788 BLX r1 ;296
00001a 0006 MOVS r6,r0 ;296
00001c d030 BEQ |L1.128|
00001e 2801 CMP r0,#1 ;298
000020 d011 BEQ |L1.70|
000022 2802 CMP r0,#2 ;298
000024 d12c BNE |L1.128|
000026 2001 MOVS r0,#1 ;314
000028 6168 STR r0,[r5,#0x14] ;315
00002a 69a8 LDR r0,[r5,#0x18] ;315
00002c b300 CBZ r0,|L1.112|
00002e f8d401b8 LDR r0,[r4,#0x1b8] ;316
000032 6900 LDR r0,[r0,#0x10] ;316
000034 b320 CBZ r0,|L1.128|
000036 6821 LDR r1,[r4,#0] ;317
000038 203b MOVS r0,#0x3b ;317
00003a 6148 STR r0,[r1,#0x14] ;317
00003c 6820 LDR r0,[r4,#0] ;317
00003e 6801 LDR r1,[r0,#0] ;317
000040 4620 MOV r0,r4 ;317
000042 4788 BLX r1 ;317
000044 e01c B |L1.128|
|L1.70|
000046 69a8 LDR r0,[r5,#0x18] ;300
000048 b128 CBZ r0,|L1.86|
00004a 4620 MOV r0,r4 ;301
00004c f7fffffe BL initial_setup
000050 2000 MOVS r0,#0 ;302
000052 61a8 STR r0,[r5,#0x18] ;302
000054 e014 B |L1.128|
|L1.86|
000056 6928 LDR r0,[r5,#0x10] ;308
000058 b930 CBNZ r0,|L1.104|
00005a 6821 LDR r1,[r4,#0] ;309
00005c 2023 MOVS r0,#0x23 ;309
00005e 6148 STR r0,[r1,#0x14] ;309
000060 6820 LDR r0,[r4,#0] ;309
000062 6801 LDR r1,[r0,#0] ;309
000064 4620 MOV r0,r4 ;309
000066 4788 BLX r1 ;309
|L1.104|
000068 4620 MOV r0,r4 ;310
00006a f7fffffe BL start_input_pass
00006e e007 B |L1.128|
|L1.112|
000070 f8d41090 LDR r1,[r4,#0x90] ;322
000074 f8d40098 LDR r0,[r4,#0x98] ;322
000078 4288 CMP r0,r1 ;322
00007a dd01 BLE |L1.128|
00007c f8c41098 STR r1,[r4,#0x98] ;323
|L1.128|
000080 4630 MOV r0,r6 ;330
000082 bd70 POP {r4-r6,pc}
;;;332
ENDP
AREA ||i.finish_input_pass||, CODE, READONLY, ALIGN=2
finish_input_pass PROC
;;;270 METHODDEF(void)
;;;271 finish_input_pass (j_decompress_ptr cinfo)
000000 f8d001b4 LDR r0,[r0,#0x1b4]
;;;272 {
;;;273 cinfo->inputctl->consume_input = consume_markers;
000004 4901 LDR r1,|L2.12|
;;;274 }
000006 6001 STR r1,[r0,#0]
000008 4770 BX lr
;;;275
ENDP
00000a 0000 DCW 0x0000
|L2.12|
DCD consume_markers
AREA ||i.initial_setup||, CODE, READONLY, ALIGN=1
initial_setup PROC
;;;38 LOCAL(void)
;;;39 initial_setup (j_decompress_ptr cinfo)
000000 e92d47f0 PUSH {r4-r10,lr}
;;;40 /* Called once, when first SOS marker is reached */
;;;41 {
000004 4604 MOV r4,r0
;;;42 int ci;
;;;43 jpeg_component_info *compptr;
;;;44
;;;45 /* Make sure image isn't bigger than I can handle */
;;;46 if ((long) cinfo->image_height > (long) JPEG_MAX_DIMENSION ||
000006 6a01 LDR r1,[r0,#0x20]
000008 f64f70dc MOV r0,#0xffdc
00000c 4281 CMP r1,r0
00000e dc02 BGT |L3.22|
;;;47 (long) cinfo->image_width > (long) JPEG_MAX_DIMENSION)
000010 69e1 LDR r1,[r4,#0x1c]
000012 4281 CMP r1,r0
000014 dd08 BLE |L3.40|
|L3.22|
;;;48 ERREXIT1(cinfo, JERR_IMAGE_TOO_BIG, (unsigned int) JPEG_MAX_DIMENSION);
000016 6822 LDR r2,[r4,#0]
000018 2129 MOVS r1,#0x29
00001a 6151 STR r1,[r2,#0x14]
00001c 6821 LDR r1,[r4,#0]
00001e 6188 STR r0,[r1,#0x18]
000020 6820 LDR r0,[r4,#0]
000022 6801 LDR r1,[r0,#0]
000024 4620 MOV r0,r4
000026 4788 BLX r1
|L3.40|
;;;49
;;;50 /* For now, precision must match compiled-in value... */
;;;51 if (cinfo->data_precision != BITS_IN_JSAMPLE)
000028 f8d400d4 LDR r0,[r4,#0xd4]
00002c 2808 CMP r0,#8
00002e d00a BEQ |L3.70|
;;;52 ERREXIT1(cinfo, JERR_BAD_PRECISION, cinfo->data_precision);
000030 6821 LDR r1,[r4,#0]
000032 200f MOVS r0,#0xf
000034 6148 STR r0,[r1,#0x14]
000036 6821 LDR r1,[r4,#0]
000038 f8d400d4 LDR r0,[r4,#0xd4]
00003c 6188 STR r0,[r1,#0x18]
00003e 6820 LDR r0,[r4,#0]
000040 6801 LDR r1,[r0,#0]
000042 4620 MOV r0,r4
000044 4788 BLX r1
|L3.70|
;;;53
;;;54 /* Check that number of components won't exceed internal array sizes */
;;;55 if (cinfo->num_components > MAX_COMPONENTS)
000046 6a60 LDR r0,[r4,#0x24]
000048 2804 CMP r0,#4
00004a dd0c BLE |L3.102|
;;;56 ERREXIT2(cinfo, JERR_COMPONENT_COUNT, cinfo->num_components,
00004c 6821 LDR r1,[r4,#0]
00004e 201a MOVS r0,#0x1a
000050 6148 STR r0,[r1,#0x14]
000052 6821 LDR r1,[r4,#0]
000054 6a60 LDR r0,[r4,#0x24]
000056 6188 STR r0,[r1,#0x18]
000058 6821 LDR r1,[r4,#0]
00005a 2004 MOVS r0,#4
00005c 61c8 STR r0,[r1,#0x1c]
00005e 6820 LDR r0,[r4,#0]
000060 6801 LDR r1,[r0,#0]
000062 4620 MOV r0,r4
000064 4788 BLX r1
|L3.102|
;;;57 MAX_COMPONENTS);
;;;58
;;;59 /* Compute maximum sampling factors; check factor validity */
;;;60 cinfo->max_h_samp_factor = 1;
000066 2601 MOVS r6,#1
000068 34d8 ADDS r4,r4,#0xd8
;;;61 cinfo->max_v_samp_factor = 1;
00006a 65e6 STR r6,[r4,#0x5c]
;;;62 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
00006c 6626 STR r6,[r4,#0x60]
00006e 2700 MOVS r7,#0
000070 f85459d8 LDR r5,[r4],#-0xd8
000074 e022 B |L3.188|
|L3.118|
;;;63 ci++, compptr++) {
;;;64 if (compptr->h_samp_factor<=0 || compptr->h_samp_factor>MAX_SAMP_FACTOR ||
000076 68a8 LDR r0,[r5,#8]
000078 2800 CMP r0,#0
00007a dd06 BLE |L3.138|
00007c 2804 CMP r0,#4
00007e dc04 BGT |L3.138|
;;;65 compptr->v_samp_factor<=0 || compptr->v_samp_factor>MAX_SAMP_FACTOR)
000080 68e8 LDR r0,[r5,#0xc]
000082 2800 CMP r0,#0
000084 dd01 BLE |L3.138|
000086 2804 CMP r0,#4
000088 dd06 BLE |L3.152|
|L3.138|
;;;66 ERREXIT(cinfo, JERR_BAD_SAMPLING);
00008a 6821 LDR r1,[r4,#0]
00008c 2012 MOVS r0,#0x12
00008e 6148 STR r0,[r1,#0x14]
000090 6820 LDR r0,[r4,#0]
000092 6801 LDR r1,[r0,#0]
000094 4620 MOV r0,r4
000096 4788 BLX r1
|L3.152|
;;;67 cinfo->max_h_samp_factor = MAX(cinfo->max_h_samp_factor,
000098 f8d40134 LDR r0,[r4,#0x134]
00009c 68a9 LDR r1,[r5,#8]
00009e 4288 CMP r0,r1
0000a0 dc00 BGT |L3.164|
0000a2 4608 MOV r0,r1
|L3.164|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -