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

📄 jdtrans.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jdtrans.o --depend=.\Obj\jdtrans.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\jdtrans.c]
                          THUMB

                          AREA ||i.jpeg_read_coefficients||, CODE, READONLY, ALIGN=1

                  jpeg_read_coefficients PROC
;;;44     GLOBAL(jvirt_barray_ptr *)
;;;45     jpeg_read_coefficients (j_decompress_ptr cinfo)
000000  b510              PUSH     {r4,lr}
;;;46     {
000002  4604              MOV      r4,r0
;;;47       if (cinfo->global_state == DSTATE_READY) {
000004  6940              LDR      r0,[r0,#0x14]
000006  28ca              CMP      r0,#0xca
000008  d105              BNE      |L1.22|
;;;48         /* First call: initialize active modules */
;;;49         transdecode_master_selection(cinfo);
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       transdecode_master_selection
;;;50         cinfo->global_state = DSTATE_RDCOEFS;
000010  20d1              MOVS     r0,#0xd1
000012  6160              STR      r0,[r4,#0x14]
000014  e001              B        |L1.26|
                  |L1.22|
;;;51       }
;;;52       if (cinfo->global_state == DSTATE_RDCOEFS) {
000016  28d1              CMP      r0,#0xd1
000018  d124              BNE      |L1.100|
                  |L1.26|
;;;53         /* Absorb whole file into the coef buffer */
;;;54         while(1) {
;;;55           int retcode;
;;;56           /* Call progress monitor hook if present */
;;;57           if (cinfo->progress != NULL)
00001a  68a0              LDR      r0,[r4,#8]
00001c  b110              CBZ      r0,|L1.36|
;;;58     	(*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
00001e  6801              LDR      r1,[r0,#0]
000020  4620              MOV      r0,r4
000022  4788              BLX      r1
                  |L1.36|
;;;59           /* Absorb some more input */
;;;60           retcode = (*cinfo->inputctl->consume_input) (cinfo);
000024  f8d401b4          LDR      r0,[r4,#0x1b4]
000028  6801              LDR      r1,[r0,#0]
00002a  4620              MOV      r0,r4
00002c  4788              BLX      r1
;;;61           if (retcode == JPEG_SUSPENDED)
00002e  b908              CBNZ     r0,|L1.52|
                  |L1.48|
;;;62     	return NULL;
000030  2000              MOVS     r0,#0
;;;63           if (retcode == JPEG_REACHED_EOI)
;;;64     	break;
;;;65           /* Advance progress counter if appropriate */
;;;66           if (cinfo->progress != NULL &&
;;;67     	  (retcode == JPEG_ROW_COMPLETED || retcode == JPEG_REACHED_SOS)) {
;;;68     	if (++cinfo->progress->pass_counter >= cinfo->progress->pass_limit) {
;;;69     	  /* startup underestimated number of scans; ratchet up one scan */
;;;70     	  cinfo->progress->pass_limit += (long) cinfo->total_iMCU_rows;
;;;71     	}
;;;72           }
;;;73         }
;;;74         /* Set state so that jpeg_finish_decompress does the right thing */
;;;75         cinfo->global_state = DSTATE_STOPPING;
;;;76       }
;;;77       /* At this point we should be in state DSTATE_STOPPING if being used
;;;78        * standalone, or in state DSTATE_BUFIMAGE if being invoked to get access
;;;79        * to the coefficients during a full buffered-image-mode decompression.
;;;80        */
;;;81       if ((cinfo->global_state == DSTATE_STOPPING ||
;;;82            cinfo->global_state == DSTATE_BUFIMAGE) && cinfo->buffered_image) {
;;;83         return cinfo->coef->coef_arrays;
;;;84       }
;;;85       /* Oops, improper usage */
;;;86       ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
;;;87       return NULL;			/* keep compiler happy */
;;;88     }
000032  bd10              POP      {r4,pc}
                  |L1.52|
000034  2802              CMP      r0,#2                 ;63
000036  d102              BNE      |L1.62|
000038  20d2              MOVS     r0,#0xd2              ;75
00003a  6160              STR      r0,[r4,#0x14]         ;75
00003c  e016              B        |L1.108|
                  |L1.62|
00003e  68a1              LDR      r1,[r4,#8]            ;66
000040  2900              CMP      r1,#0                 ;66
000042  d0ea              BEQ      |L1.26|
000044  2803              CMP      r0,#3                 ;67
000046  d001              BEQ      |L1.76|
000048  2801              CMP      r0,#1                 ;67
00004a  d1e6              BNE      |L1.26|
                  |L1.76|
00004c  684a              LDR      r2,[r1,#4]            ;68
00004e  1c52              ADDS     r2,r2,#1              ;68
000050  604a              STR      r2,[r1,#4]            ;68
000052  68a0              LDR      r0,[r4,#8]            ;68
000054  6881              LDR      r1,[r0,#8]            ;68
000056  428a              CMP      r2,r1                 ;68
000058  dbdf              BLT      |L1.26|
00005a  f8d42140          LDR      r2,[r4,#0x140]        ;70
00005e  4411              ADD      r1,r1,r2              ;70
000060  6081              STR      r1,[r0,#8]            ;70
000062  e7da              B        |L1.26|
                  |L1.100|
000064  28d2              CMP      r0,#0xd2              ;81
000066  d001              BEQ      |L1.108|
000068  28cf              CMP      r0,#0xcf              ;82
00006a  d105              BNE      |L1.120|
                  |L1.108|
00006c  6c20              LDR      r0,[r4,#0x40]         ;82
00006e  b118              CBZ      r0,|L1.120|
000070  f8d401ac          LDR      r0,[r4,#0x1ac]        ;83
000074  6900              LDR      r0,[r0,#0x10]         ;83
000076  bd10              POP      {r4,pc}
                  |L1.120|
000078  6821              LDR      r1,[r4,#0]            ;86
00007a  2014              MOVS     r0,#0x14              ;86
00007c  6148              STR      r0,[r1,#0x14]         ;86
00007e  6821              LDR      r1,[r4,#0]            ;86
000080  6960              LDR      r0,[r4,#0x14]         ;86
000082  6188              STR      r0,[r1,#0x18]         ;86
000084  6820              LDR      r0,[r4,#0]            ;86
000086  6801              LDR      r1,[r0,#0]            ;86
000088  4620              MOV      r0,r4                 ;86
00008a  4788              BLX      r1                    ;86
00008c  e7d0              B        |L1.48|
;;;89     
                          ENDP


                          AREA ||i.transdecode_master_selection||, CODE, READONLY, ALIGN=1

                  transdecode_master_selection PROC
;;;96     LOCAL(void)
;;;97     transdecode_master_selection (j_decompress_ptr cinfo)
000000  b570              PUSH     {r4-r6,lr}
;;;98     {
;;;99       /* This is effectively a buffered-image operation. */
;;;100      cinfo->buffered_image = TRUE;
000002  2501              MOVS     r5,#1
000004  4604              MOV      r4,r0                 ;98
;;;101    
;;;102      /* Entropy decoding: either Huffman or arithmetic coding. */
;;;103      if (cinfo->arith_code) {
000006  6405              STR      r5,[r0,#0x40]
000008  f8d000e0          LDR      r0,[r0,#0xe0]
00000c  b130              CBZ      r0,|L2.28|
;;;104        ERREXIT(cinfo, JERR_ARITH_NOTIMPL);
00000e  6820              LDR      r0,[r4,#0]
000010  6145              STR      r5,[r0,#0x14]
000012  6820              LDR      r0,[r4,#0]
000014  6801              LDR      r1,[r0,#0]
000016  4620              MOV      r0,r4
000018  4788              BLX      r1
00001a  e009              B        |L2.48|
                  |L2.28|
;;;105      } else {
;;;106        if (cinfo->progressive_mode) {
00001c  f8d400dc          LDR      r0,[r4,#0xdc]
000020  2800              CMP      r0,#0
;;;107    #ifdef D_PROGRESSIVE_SUPPORTED
;;;108          jinit_phuff_decoder(cinfo);
000022  4620              MOV      r0,r4
000024  d002              BEQ      |L2.44|
000026  f7fffffe          BL       jinit_phuff_decoder
00002a  e001              B        |L2.48|
                  |L2.44|
;;;109    #else
;;;110          ERREXIT(cinfo, JERR_NOT_COMPILED);
;;;111    #endif
;;;112        } else
;;;113          jinit_huff_decoder(cinfo);
00002c  f7fffffe          BL       jinit_huff_decoder
                  |L2.48|
;;;114      }
;;;115    
;;;116      /* Always get a full-image coefficient buffer. */
;;;117      jinit_d_coef_controller(cinfo, TRUE);
000030  2101              MOVS     r1,#1
000032  4620              MOV      r0,r4
000034  f7fffffe          BL       jinit_d_coef_controller
;;;118    
;;;119      /* We can now tell the memory manager to allocate virtual arrays. */
;;;120      (*cinfo->mem->realize_virt_arrays) ((j_common_ptr) cinfo);
000038  6860              LDR      r0,[r4,#4]
00003a  6981              LDR      r1,[r0,#0x18]
00003c  4620              MOV      r0,r4
00003e  4788              BLX      r1
;;;121    
;;;122      /* Initialize input side of decompressor to consume first scan. */
;;;123      (*cinfo->inputctl->start_input_pass) (cinfo);
000040  f8d401b4          LDR      r0,[r4,#0x1b4]
000044  6881              LDR      r1,[r0,#8]
000046  4620              MOV      r0,r4
000048  4788              BLX      r1
;;;124    
;;;125      /* Initialize progress monitoring. */
;;;126      if (cinfo->progress != NULL) {
00004a  68a1              LDR      r1,[r4,#8]
00004c  2900              CMP      r1,#0
00004e  d019              BEQ      |L2.132|
;;;127        int nscans;
;;;128        /* Estimate number of scans to set pass_limit. */
;;;129        if (cinfo->progressive_mode) {
000050  f8d400dc          LDR      r0,[r4,#0xdc]
000054  b120              CBZ      r0,|L2.96|
;;;130          /* Arbitrarily estimate 2 interleaved DC scans + 3 AC scans/component. */
;;;131          nscans = 2 + 3 * cinfo->num_components;
000056  6a60              LDR      r0,[r4,#0x24]
000058  eb000040          ADD      r0,r0,r0,LSL #1
00005c  1c80              ADDS     r0,r0,#2
00005e  e006              B        |L2.110|
                  |L2.96|
;;;132        } else if (cinfo->inputctl->has_multiple_scans) {
000060  f8d401b4          LDR      r0,[r4,#0x1b4]
000064  6900              LDR      r0,[r0,#0x10]
000066  b108              CBZ      r0,|L2.108|
;;;133          /* For a nonprogressive multiscan file, estimate 1 scan per component. */
;;;134          nscans = cinfo->num_components;
000068  6a60              LDR      r0,[r4,#0x24]
00006a  e000              B        |L2.110|
                  |L2.108|
;;;135        } else {
;;;136          nscans = 1;
00006c  2001              MOVS     r0,#1
                  |L2.110|
;;;137        }
;;;138        cinfo->progress->pass_counter = 0L;
00006e  2200              MOVS     r2,#0
;;;139        cinfo->progress->pass_limit = (long) cinfo->total_iMCU_rows * nscans;
000070  604a              STR      r2,[r1,#4]
000072  f8d41140          LDR      r1,[r4,#0x140]
000076  68a3              LDR      r3,[r4,#8]
000078  4341              MULS     r1,r0,r1
;;;140        cinfo->progress->completed_passes = 0;
00007a  6099              STR      r1,[r3,#8]
00007c  68a0              LDR      r0,[r4,#8]
;;;141        cinfo->progress->total_passes = 1;
00007e  60c2              STR      r2,[r0,#0xc]
000080  68a0              LDR      r0,[r4,#8]
;;;142      }
000082  6105              STR      r5,[r0,#0x10]
                  |L2.132|
;;;143    }
000084  bd70              POP      {r4-r6,pc}
                          ENDP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -