📄 jdmarker.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jdmarker.o --depend=.\Obj\jdmarker.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\jdmarker.c]
THUMB
AREA ||i.examine_app0||, CODE, READONLY, ALIGN=1
examine_app0 PROC
;;;583 LOCAL(void)
;;;584 examine_app0 (j_decompress_ptr cinfo, JOCTET FAR * data,
000000 b570 PUSH {r4-r6,lr}
;;;585 unsigned int datalen, INT32 remaining)
;;;586 /* Examine first few bytes from an APP0.
;;;587 * Take appropriate action if it is a JFIF marker.
;;;588 * datalen is # of bytes at data[], remaining is length of rest of marker data.
;;;589 */
;;;590 {
000002 4604 MOV r4,r0
;;;591 INT32 totallen = (INT32) datalen + remaining;
000004 18d6 ADDS r6,r2,r3
;;;592
;;;593 if (datalen >= APP0_DATA_LEN &&
;;;594 GETJOCTET(data[0]) == 0x4A &&
;;;595 GETJOCTET(data[1]) == 0x46 &&
;;;596 GETJOCTET(data[2]) == 0x49 &&
;;;597 GETJOCTET(data[3]) == 0x46 &&
;;;598 GETJOCTET(data[4]) == 0) {
;;;599 /* Found JFIF APP0 marker: save info */
;;;600 cinfo->saw_JFIF_marker = TRUE;
;;;601 cinfo->JFIF_major_version = GETJOCTET(data[5]);
;;;602 cinfo->JFIF_minor_version = GETJOCTET(data[6]);
;;;603 cinfo->density_unit = GETJOCTET(data[7]);
;;;604 cinfo->X_density = (GETJOCTET(data[8]) << 8) + GETJOCTET(data[9]);
;;;605 cinfo->Y_density = (GETJOCTET(data[10]) << 8) + GETJOCTET(data[11]);
;;;606 /* Check version.
;;;607 * Major version must be 1, anything else signals an incompatible change.
;;;608 * (We used to treat this as an error, but now it's a nonfatal warning,
;;;609 * because some bozo at Hijaak couldn't read the spec.)
;;;610 * Minor version should be 0..2, but process anyway if newer.
;;;611 */
;;;612 if (cinfo->JFIF_major_version != 1)
;;;613 WARNMS2(cinfo, JWRN_JFIF_MAJOR,
000006 6800 LDR r0,[r0,#0]
000008 460d MOV r5,r1 ;590
00000a 2a0e CMP r2,#0xe ;593
00000c d36d BCC |L1.234|
00000e 7829 LDRB r1,[r5,#0] ;594
000010 294a CMP r1,#0x4a ;594
000012 d16a BNE |L1.234|
000014 7869 LDRB r1,[r5,#1] ;595
000016 2946 CMP r1,#0x46 ;595
000018 d167 BNE |L1.234|
00001a 78a9 LDRB r1,[r5,#2] ;596
00001c 2949 CMP r1,#0x49 ;596
00001e d164 BNE |L1.234|
000020 78e9 LDRB r1,[r5,#3] ;597
000022 2946 CMP r1,#0x46 ;597
000024 d161 BNE |L1.234|
000026 7929 LDRB r1,[r5,#4] ;598
000028 2900 CMP r1,#0 ;598
00002a d15e BNE |L1.234|
00002c 2101 MOVS r1,#1 ;600
00002e f504748c ADD r4,r4,#0x118 ;600
000032 6021 STR r1,[r4,#0] ;601
000034 7969 LDRB r1,[r5,#5] ;601
000036 7121 STRB r1,[r4,#4] ;601
000038 79a9 LDRB r1,[r5,#6] ;602
00003a 7161 STRB r1,[r4,#5] ;602
00003c 79e9 LDRB r1,[r5,#7] ;603
00003e 71a1 STRB r1,[r4,#6] ;603
000040 7a69 LDRB r1,[r5,#9] ;604
000042 7a2a LDRB r2,[r5,#8] ;604
000044 eb012102 ADD r1,r1,r2,LSL #8 ;604
000048 8121 STRH r1,[r4,#8] ;604
00004a 7ae9 LDRB r1,[r5,#0xb] ;605
00004c 7aaa LDRB r2,[r5,#0xa] ;605
00004e eb012102 ADD r1,r1,r2,LSL #8 ;605
000052 8161 STRH r1,[r4,#0xa] ;605
000054 7921 LDRB r1,[r4,#4] ;612
000056 f5a4748c SUB r4,r4,#0x118 ;612
00005a 2901 CMP r1,#1 ;612
00005c d00f BEQ |L1.126|
00005e 2177 MOVS r1,#0x77
000060 6141 STR r1,[r0,#0x14]
000062 6821 LDR r1,[r4,#0]
000064 f894011c LDRB r0,[r4,#0x11c]
000068 6188 STR r0,[r1,#0x18]
00006a 6821 LDR r1,[r4,#0]
00006c f894011d LDRB r0,[r4,#0x11d]
000070 61c8 STR r0,[r1,#0x1c]
000072 6820 LDR r0,[r4,#0]
000074 f04f31ff MOV r1,#0xffffffff
000078 6842 LDR r2,[r0,#4]
00007a 4620 MOV r0,r4
00007c 4790 BLX r2
|L1.126|
;;;614 cinfo->JFIF_major_version, cinfo->JFIF_minor_version);
;;;615 /* Generate trace messages */
;;;616 TRACEMS5(cinfo, 1, JTRC_JFIF,
00007e 6820 LDR r0,[r4,#0]
000080 f894111c LDRB r1,[r4,#0x11c]
000084 6181 STR r1,[r0,#0x18]
000086 f894111d LDRB r1,[r4,#0x11d]
00008a 61c1 STR r1,[r0,#0x1c]
00008c f8b41120 LDRH r1,[r4,#0x120]
000090 6201 STR r1,[r0,#0x20]
000092 f8b41122 LDRH r1,[r4,#0x122]
000096 6241 STR r1,[r0,#0x24]
000098 f894111e LDRB r1,[r4,#0x11e]
00009c 6281 STR r1,[r0,#0x28]
00009e 6821 LDR r1,[r4,#0]
0000a0 2057 MOVS r0,#0x57
0000a2 6148 STR r0,[r1,#0x14]
0000a4 6820 LDR r0,[r4,#0]
0000a6 2101 MOVS r1,#1
0000a8 6842 LDR r2,[r0,#4]
0000aa 4620 MOV r0,r4
0000ac 4790 BLX r2
;;;617 cinfo->JFIF_major_version, cinfo->JFIF_minor_version,
;;;618 cinfo->X_density, cinfo->Y_density, cinfo->density_unit);
;;;619 /* Validate thumbnail dimensions and issue appropriate messages */
;;;620 if (GETJOCTET(data[12]) | GETJOCTET(data[13]))
0000ae 7b28 LDRB r0,[r5,#0xc]
0000b0 7b69 LDRB r1,[r5,#0xd]
0000b2 4308 ORRS r0,r0,r1
0000b4 d00d BEQ |L1.210|
;;;621 TRACEMS2(cinfo, 1, JTRC_JFIF_THUMBNAIL,
0000b6 6821 LDR r1,[r4,#0]
0000b8 205a MOVS r0,#0x5a
0000ba 6148 STR r0,[r1,#0x14]
0000bc 6821 LDR r1,[r4,#0]
0000be 7b28 LDRB r0,[r5,#0xc]
0000c0 6188 STR r0,[r1,#0x18]
0000c2 6821 LDR r1,[r4,#0]
0000c4 7b68 LDRB r0,[r5,#0xd]
0000c6 61c8 STR r0,[r1,#0x1c]
0000c8 6820 LDR r0,[r4,#0]
0000ca 2101 MOVS r1,#1
0000cc 6842 LDR r2,[r0,#4]
0000ce 4620 MOV r0,r4
0000d0 4790 BLX r2
|L1.210|
;;;622 GETJOCTET(data[12]), GETJOCTET(data[13]));
;;;623 totallen -= APP0_DATA_LEN;
;;;624 if (totallen !=
0000d2 7b28 LDRB r0,[r5,#0xc]
0000d4 7b69 LDRB r1,[r5,#0xd]
0000d6 3e0e SUBS r6,r6,#0xe ;623
0000d8 4348 MULS r0,r1,r0
0000da eb000040 ADD r0,r0,r0,LSL #1
0000de 42b0 CMP r0,r6
0000e0 d033 BEQ |L1.330|
;;;625 ((INT32)GETJOCTET(data[12]) * (INT32)GETJOCTET(data[13]) * (INT32) 3))
;;;626 TRACEMS1(cinfo, 1, JTRC_JFIF_BADTHUMBNAILSIZE, (int) totallen);
0000e2 6821 LDR r1,[r4,#0]
0000e4 2058 MOVS r0,#0x58
0000e6 6148 STR r0,[r1,#0x14]
0000e8 e018 B |L1.284|
|L1.234|
;;;627 } else if (datalen >= 6 &&
0000ea 2a06 CMP r2,#6
0000ec d32b BCC |L1.326|
;;;628 GETJOCTET(data[0]) == 0x4A &&
0000ee 7829 LDRB r1,[r5,#0]
0000f0 294a CMP r1,#0x4a
0000f2 d128 BNE |L1.326|
;;;629 GETJOCTET(data[1]) == 0x46 &&
0000f4 7869 LDRB r1,[r5,#1]
0000f6 2946 CMP r1,#0x46
0000f8 d125 BNE |L1.326|
;;;630 GETJOCTET(data[2]) == 0x58 &&
0000fa 78a9 LDRB r1,[r5,#2]
0000fc 2958 CMP r1,#0x58
0000fe d122 BNE |L1.326|
;;;631 GETJOCTET(data[3]) == 0x58 &&
000100 78e9 LDRB r1,[r5,#3]
000102 2958 CMP r1,#0x58
000104 d11f BNE |L1.326|
;;;632 GETJOCTET(data[4]) == 0) {
000106 7929 LDRB r1,[r5,#4]
000108 b9e9 CBNZ r1,|L1.326|
;;;633 /* Found JFIF "JFXX" extension APP0 marker */
;;;634 /* The library doesn't actually do anything with these,
;;;635 * but we try to produce a helpful trace message.
;;;636 */
;;;637 switch (GETJOCTET(data[5])) {
00010a 7969 LDRB r1,[r5,#5]
00010c 2910 CMP r1,#0x10
00010e d008 BEQ |L1.290|
000110 2911 CMP r1,#0x11
000112 d008 BEQ |L1.294|
000114 2913 CMP r1,#0x13
000116 d108 BNE |L1.298|
;;;638 case 0x10:
;;;639 TRACEMS1(cinfo, 1, JTRC_THUMB_JPEG, (int) totallen);
;;;640 break;
;;;641 case 0x11:
;;;642 TRACEMS1(cinfo, 1, JTRC_THUMB_PALETTE, (int) totallen);
;;;643 break;
;;;644 case 0x13:
;;;645 TRACEMS1(cinfo, 1, JTRC_THUMB_RGB, (int) totallen);
000118 216e MOVS r1,#0x6e
|L1.282|
;;;646 break;
;;;647 default:
;;;648 TRACEMS2(cinfo, 1, JTRC_JFIF_EXTENSION,
;;;649 GETJOCTET(data[5]), (int) totallen);
;;;650 break;
;;;651 }
;;;652 } else {
;;;653 /* Start of APP0 does not match "JFIF" or "JFXX", or too short */
;;;654 TRACEMS1(cinfo, 1, JTRC_APP0, (int) totallen);
00011a 6141 STR r1,[r0,#0x14]
|L1.284|
00011c 6820 LDR r0,[r4,#0] ;626
00011e 6186 STR r6,[r0,#0x18] ;626
000120 e00a B |L1.312|
|L1.290|
000122 216c MOVS r1,#0x6c ;639
000124 e7f9 B |L1.282|
|L1.294|
000126 216d MOVS r1,#0x6d ;642
000128 e7f7 B |L1.282|
|L1.298|
00012a 2159 MOVS r1,#0x59 ;648
00012c 6141 STR r1,[r0,#0x14] ;648
00012e 6821 LDR r1,[r4,#0] ;648
000130 7968 LDRB r0,[r5,#5] ;648
000132 6188 STR r0,[r1,#0x18] ;648
000134 6820 LDR r0,[r4,#0] ;648
000136 61c6 STR r6,[r0,#0x1c] ;648
|L1.312|
000138 6820 LDR r0,[r4,#0]
00013a 2101 MOVS r1,#1
00013c 6842 LDR r2,[r0,#4]
00013e 4620 MOV r0,r4
000140 e8bd4070 POP {r4-r6,lr}
000144 4710 BX r2
|L1.326|
000146 214d MOVS r1,#0x4d
000148 e7e7 B |L1.282|
|L1.330|
;;;655 }
;;;656 }
00014a bd70 POP {r4-r6,pc}
;;;657
ENDP
AREA ||i.examine_app14||, CODE, READONLY, ALIGN=1
examine_app14 PROC
;;;659 LOCAL(void)
;;;660 examine_app14 (j_decompress_ptr cinfo, JOCTET FAR * data,
000000 b570 PUSH {r4-r6,lr}
;;;661 unsigned int datalen, INT32 remaining)
;;;662 /* Examine first few bytes from an APP14.
;;;663 * Take appropriate action if it is an Adobe marker.
;;;664 * datalen is # of bytes at data[], remaining is length of rest of marker data.
;;;665 */
;;;666 {
000002 4604 MOV r4,r0
;;;667 unsigned int version, flags0, flags1, transform;
;;;668
;;;669 if (datalen >= APP14_DATA_LEN &&
;;;670 GETJOCTET(data[0]) == 0x41 &&
;;;671 GETJOCTET(data[1]) == 0x64 &&
;;;672 GETJOCTET(data[2]) == 0x6F &&
;;;673 GETJOCTET(data[3]) == 0x62 &&
;;;674 GETJOCTET(data[4]) == 0x65) {
;;;675 /* Found Adobe APP14 marker */
;;;676 version = (GETJOCTET(data[5]) << 8) + GETJOCTET(data[6]);
;;;677 flags0 = (GETJOCTET(data[7]) << 8) + GETJOCTET(data[8]);
;;;678 flags1 = (GETJOCTET(data[9]) << 8) + GETJOCTET(data[10]);
;;;679 transform = GETJOCTET(data[11]);
;;;680 TRACEMS4(cinfo, 1, JTRC_ADOBE, version, flags0, flags1, transform);
000004 6800 LDR r0,[r0,#0]
000006 2a0c CMP r2,#0xc ;669
000008 d32d BCC |L2.102|
00000a 780d LDRB r5,[r1,#0] ;670
00000c 2d41 CMP r5,#0x41 ;670
00000e d12a BNE |L2.102|
000010 784d LDRB r5,[r1,#1] ;671
000012 2d64 CMP r5,#0x64 ;671
000014 d127 BNE |L2.102|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -