jdmainct.txt

来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 767 行 · 第 1/3 页

TXT
767
字号
00013e  f8d5213c          LDR      r2,[r5,#0x13c]
000142  f8d500d8          LDR      r0,[r5,#0xd8]
000146  f04f0e00          MOV      lr,#0
00014a  9202              STR      r2,[sp,#8]
00014c  e034              B        |L4.440|
00014e  bf00              NOP      
                  |L4.336|
000150  f8d83024          LDR      r3,[r8,#0x24]
000154  f8d8000c          LDR      r0,[r8,#0xc]
000158  f8d5113c          LDR      r1,[r5,#0x13c]
00015c  4358              MULS     r0,r3,r0
00015e  fb90f1f1          SDIV     r1,r0,r1
000162  f8d93024          LDR      r3,[r9,#0x24]
000166  f8d92020          LDR      r2,[r9,#0x20]
00016a  f853702e          LDR      r7,[r3,lr,LSL #2]
00016e  9b02              LDR      r3,[sp,#8]
000170  f852202e          LDR      r2,[r2,lr,LSL #2]
000174  2000              MOVS     r0,#0
000176  f1030b02          ADD      r11,r3,#2
00017a  f1030a01          ADD      r10,r3,#1
00017e  e015              B        |L4.428|
                  |L4.384|
000180  fb010c0a          MLA      r12,r1,r10,r0
000184  f852602c          LDR      r6,[r2,r12,LSL #2]
000188  1a43              SUBS     r3,r0,r1
00018a  f8426023          STR      r6,[r2,r3,LSL #2]
00018e  f857602c          LDR      r6,[r7,r12,LSL #2]
000192  f8476023          STR      r6,[r7,r3,LSL #2]
000196  fb01060b          MLA      r6,r1,r11,r0
00019a  f8523020          LDR      r3,[r2,r0,LSL #2]
00019e  f8423026          STR      r3,[r2,r6,LSL #2]
0001a2  f8573020          LDR      r3,[r7,r0,LSL #2]
0001a6  f8473026          STR      r3,[r7,r6,LSL #2]
0001aa  1c40              ADDS     r0,r0,#1
                  |L4.428|
0001ac  4288              CMP      r0,r1
0001ae  dbe7              BLT      |L4.384|
0001b0  f10e0e01          ADD      lr,lr,#1
0001b4  f1080054          ADD      r0,r8,#0x54
                  |L4.440|
0001b8  4680              MOV      r8,r0
0001ba  6a68              LDR      r0,[r5,#0x24]
0001bc  4570              CMP      r0,lr
0001be  dcc7              BGT      |L4.336|
                  |L4.448|
;;;437          set_wraparound_pointers(cinfo);
;;;438        /* Prepare to load new iMCU row using other xbuffer list */
;;;439        pMain->whichptr ^= 1;	/* 0=>1 or 1=>0 */
0001c0  6aa1              LDR      r1,[r4,#0x28]
;;;440        pMain->buffer_full = FALSE;
0001c2  2000              MOVS     r0,#0
0001c4  f0810101          EOR      r1,r1,#1              ;439
;;;441        /* Still need to process last row group of this iMCU row, */
;;;442        /* which is saved at index M+1 of the other xbuffer */
;;;443        pMain->rowgroup_ctr = (JDIMENSION) (cinfo->min_DCT_scaled_size + 1);
0001c8  62a1              STR      r1,[r4,#0x28]
0001ca  61a0              STR      r0,[r4,#0x18]
0001cc  f8d5013c          LDR      r0,[r5,#0x13c]
;;;444        pMain->rowgroups_avail = (JDIMENSION) (cinfo->min_DCT_scaled_size + 2);
;;;445        pMain->context_state = CTX_POSTPONED_ROW;
0001d0  2102              MOVS     r1,#2
0001d2  1c40              ADDS     r0,r0,#1              ;443
0001d4  61e0              STR      r0,[r4,#0x1c]         ;444
0001d6  f8d5013c          LDR      r0,[r5,#0x13c]        ;444
0001da  1c80              ADDS     r0,r0,#2              ;444
0001dc  e9c4100b          STRD     r1,r0,[r4,#0x2c]      ;405
                  |L4.480|
;;;446      }
;;;447    }
0001e0  b007              ADD      sp,sp,#0x1c
0001e2  e8bd8ff0          POP      {r4-r11,pc}
;;;448    
                          ENDP


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

                  process_data_crank_post PROC
;;;458    METHODDEF(void)
;;;459    process_data_crank_post (j_decompress_ptr cinfo,
000000  b53e              PUSH     {r1-r5,lr}
;;;460    			 JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
;;;461    			 JDIMENSION out_rows_avail)
;;;462    {
;;;463      (*cinfo->post->post_process_data) (cinfo, (JSAMPIMAGE) NULL,
000002  e88d000e          STM      sp,{r1-r3}
000006  f8d011b0          LDR      r1,[r0,#0x1b0]
00000a  2300              MOVS     r3,#0
00000c  684c              LDR      r4,[r1,#4]
00000e  461a              MOV      r2,r3
000010  4619              MOV      r1,r3
000012  47a0              BLX      r4
;;;464    				     (JDIMENSION *) NULL, (JDIMENSION) 0,
;;;465    				     output_buf, out_row_ctr, out_rows_avail);
;;;466    }
000014  bd3e              POP      {r1-r5,pc}
;;;467    
                          ENDP


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

                  process_data_simple_main PROC
;;;344    METHODDEF(void)
;;;345    process_data_simple_main (j_decompress_ptr cinfo,
000000  e92d43fe          PUSH     {r1-r9,lr}
;;;346    			  JSAMPARRAY output_buf, JDIMENSION *out_row_ctr,
;;;347    			  JDIMENSION out_rows_avail)
;;;348    {
;;;349      my_main_ptr pMain = (my_main_ptr) cinfo->main;
;;;350      JDIMENSION rowgroups_avail;
;;;351    
;;;352      /* Read input data if we haven't filled the main buffer yet */
;;;353      if (! pMain->buffer_full) {
000004  f8d041a8          LDR      r4,[r0,#0x1a8]
000008  4605              MOV      r5,r0                 ;348
00000a  69a0              LDR      r0,[r4,#0x18]
00000c  460f              MOV      r7,r1                 ;348
00000e  4690              MOV      r8,r2                 ;348
000010  4699              MOV      r9,r3                 ;348
000012  b950              CBNZ     r0,|L6.42|
;;;354        if (! (*cinfo->coef->decompress_data) (cinfo, pMain->buffer))
000014  f8d501ac          LDR      r0,[r5,#0x1ac]
000018  f1040108          ADD      r1,r4,#8
00001c  68c2              LDR      r2,[r0,#0xc]
00001e  4628              MOV      r0,r5
000020  4790              BLX      r2
000022  2800              CMP      r0,#0
000024  d015              BEQ      |L6.82|
;;;355          return;			/* suspension forced, can do nothing more */
;;;356        pMain->buffer_full = TRUE;	/* OK, we have an iMCU row to work with */
000026  2001              MOVS     r0,#1
000028  61a0              STR      r0,[r4,#0x18]
                  |L6.42|
;;;357      }
;;;358    
;;;359      /* There are always min_DCT_scaled_size row groups in an iMCU row. */
;;;360      rowgroups_avail = (JDIMENSION) cinfo->min_DCT_scaled_size;
;;;361      /* Note: at the bottom of the image, we may pass extra garbage row groups
;;;362       * to the postprocessor.  The postprocessor has to check for bottom
;;;363       * of image anyway (at row resolution), so no point in us doing it too.
;;;364       */
;;;365    
;;;366      /* Feed the postprocessor */
;;;367      (*cinfo->post->post_process_data) (cinfo, pMain->buffer,
00002a  f8d5613c          LDR      r6,[r5,#0x13c]
00002e  e88d0380          STM      sp,{r7-r9}
000032  f8d501b0          LDR      r0,[r5,#0x1b0]
000036  4633              MOV      r3,r6
000038  6847              LDR      r7,[r0,#4]
00003a  f104021c          ADD      r2,r4,#0x1c
00003e  f1040108          ADD      r1,r4,#8
000042  4628              MOV      r0,r5
000044  47b8              BLX      r7
;;;368    				     &pMain->rowgroup_ctr, rowgroups_avail,
;;;369    				     output_buf, out_row_ctr, out_rows_avail);
;;;370    
;;;371      /* Has postprocessor consumed all the data yet? If so, mark buffer empty */
;;;372      if (pMain->rowgroup_ctr >= rowgroups_avail) {
000046  69e0              LDR      r0,[r4,#0x1c]
000048  42b0              CMP      r0,r6
00004a  d302              BCC      |L6.82|
;;;373        pMain->buffer_full = FALSE;
00004c  2000              MOVS     r0,#0
;;;374        pMain->rowgroup_ctr = 0;
00004e  61a0              STR      r0,[r4,#0x18]
000050  61e0              STR      r0,[r4,#0x1c]
                  |L6.82|
;;;375      }
;;;376    }
000052  e8bd83fe          POP      {r1-r9,pc}
;;;377    
                          ENDP


                          AREA ||i.start_pass_main||, CODE, READONLY, ALIGN=2

                  start_pass_main PROC
;;;306    METHODDEF(void)
;;;307    start_pass_main (j_decompress_ptr cinfo, J_BUF_MODE pass_mode)
000000  b570              PUSH     {r4-r6,lr}
;;;308    {
;;;309      my_main_ptr pMain = (my_main_ptr) cinfo->main;
;;;310    
;;;311      switch (pass_mode) {
000002  f8d041a8          LDR      r4,[r0,#0x1a8]
000006  b121              CBZ      r1,|L7.18|
000008  2902              CMP      r1,#2
00000a  d114              BNE      |L7.54|
;;;312      case JBUF_PASS_THRU:
;;;313        if (cinfo->upsample->need_context_rows) {
;;;314          pMain->pub.process_data = process_data_context_main;
;;;315          make_funny_pointers(cinfo); /* Create the xbuffer[] lists */
;;;316          pMain->whichptr = 0;	/* Read first iMCU row into xbuffer[0] */
;;;317          pMain->context_state = CTX_PREPARE_FOR_IMCU;
;;;318          pMain->iMCU_row_ctr = 0;
;;;319        } else {
;;;320          /* Simple case with no context needed */
;;;321          pMain->pub.process_data = process_data_simple_main;
;;;322        }
;;;323        pMain->buffer_full = FALSE;	/* Mark buffer empty */
;;;324        pMain->rowgroup_ctr = 0;
;;;325        break;
;;;326    #ifdef QUANT_2PASS_SUPPORTED
;;;327      case JBUF_CRANK_DEST:
;;;328        /* For last pass of 2-pass quantization, just crank the postprocessor */
;;;329        pMain->pub.process_data = process_data_crank_post;
00000c  480e              LDR      r0,|L7.72|
;;;330        break;
00000e  6060              STR      r0,[r4,#4]
;;;331    #endif
;;;332      default:
;;;333        ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
;;;334        break;
;;;335      }
;;;336    }
000010  bd70              POP      {r4-r6,pc}
                  |L7.18|
000012  f8d011c4          LDR      r1,[r0,#0x1c4]        ;313
000016  2500              MOVS     r5,#0                 ;308
000018  6889              LDR      r1,[r1,#8]            ;313
00001a  b139              CBZ      r1,|L7.44|
00001c  490b              LDR      r1,|L7.76|
00001e  6061              STR      r1,[r4,#4]            ;315
000020  f7fffffe          BL       make_funny_pointers
000024  62a5              STR      r5,[r4,#0x28]         ;317
000026  62e5              STR      r5,[r4,#0x2c]         ;318
000028  6365              STR      r5,[r4,#0x34]         ;318
00002a  e001              B        |L7.48|
                  |L7.44|
00002c  4808              LDR      r0,|L7.80|
00002e  6060              STR      r0,[r4,#4]            ;321
                  |L7.48|
000030  61a5              STR      r5,[r4,#0x18]         ;324
000032  61e5              STR      r5,[r4,#0x1c]         ;325
000034  bd70              POP      {r4-r6,pc}
                  |L7.54|
000036  6802              LDR      r2,[r0,#0]            ;333
000038  2104              MOVS     r1,#4                 ;333
00003a  6151              STR      r1,[r2,#0x14]         ;333
00003c  6801              LDR      r1,[r0,#0]            ;333
00003e  6809              LDR      r1,[r1,#0]            ;333
000040  e8bd4070          POP      {r4-r6,lr}            ;333
000044  4708              BX       r1                    ;333
;;;337    
                          ENDP

000046  0000              DCW      0x0000
                  |L7.72|
                          DCD      process_data_crank_post
                  |L7.76|
                          DCD      process_data_context_main
                  |L7.80|
                          DCD      process_data_simple_main

⌨️ 快捷键说明

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