⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdmarker.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; 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 + -