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

📄 jdphuff.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;339        /* Completed MCU, so update state */
;;;340        BITREAD_SAVE_STATE(cinfo,entropy->bitstate);
;;;341        ASSIGN_STATE(entropy->saved, state);
;;;342      }
;;;343    
;;;344      /* Account for restart interval (no-op if not using restarts) */
;;;345      entropy->restarts_to_go--;
;;;346    
;;;347      return TRUE;
;;;348    }
0000d6  b00f              ADD      sp,sp,#0x3c
0000d8  e8bd8ff0          POP      {r4-r11,pc}
                  |L3.220|
0000dc  e9dd8408          LDRD     r8,r4,[sp,#0x20]      ;327
                  |L3.224|
0000e0  1b64              SUBS     r4,r4,r5              ;328
0000e2  fa48f004          ASR      r0,r8,r4              ;328
0000e6  2101              MOVS     r1,#1                 ;328
0000e8  40a9              LSLS     r1,r1,r5              ;328
0000ea  1e49              SUBS     r1,r1,#1              ;328
0000ec  4008              ANDS     r0,r0,r1              ;328
0000ee  4918              LDR      r1,|L3.336|
0000f0  f8511025          LDR      r1,[r1,r5,LSL #2]     ;329
0000f4  4281              CMP      r1,r0                 ;329
0000f6  dd04              BLE      |L3.258|
0000f8  4915              LDR      r1,|L3.336|
0000fa  3140              ADDS     r1,r1,#0x40           ;329
0000fc  f8511025          LDR      r1,[r1,r5,LSL #2]     ;329
000100  4408              ADD      r0,r0,r1              ;329
                  |L3.258|
000102  4605              MOV      r5,r0                 ;329
                  |L3.260|
000104  a801              ADD      r0,sp,#4              ;333
000106  eb00018a          ADD      r1,r0,r10,LSL #2      ;333
00010a  6848              LDR      r0,[r1,#4]            ;333
00010c  4428              ADD      r0,r0,r5              ;333
00010e  6048              STR      r0,[r1,#4]            ;336
000110  990b              LDR      r1,[sp,#0x2c]         ;336
000112  4088              LSLS     r0,r0,r1              ;336
000114  f8ab0000          STRH     r0,[r11,#0]           ;336
000118  f1090001          ADD      r0,r9,#1              ;316
                  |L3.284|
00011c  4681              MOV      r9,r0                 ;316
00011e  f8d60164          LDR      r0,[r6,#0x164]        ;316
000122  4548              CMP      r0,r9                 ;316
000124  dc93              BGT      |L3.78|
000126  9806              LDR      r0,[sp,#0x18]         ;340
000128  e000              B        |L3.300|
                  |L3.298|
00012a  e00b              B        |L3.324|
                  |L3.300|
00012c  69b1              LDR      r1,[r6,#0x18]         ;340
00012e  2214              MOVS     r2,#0x14              ;341
000130  6008              STR      r0,[r1,#0]            ;340
000132  69b1              LDR      r1,[r6,#0x18]         ;340
000134  9807              LDR      r0,[sp,#0x1c]         ;340
000136  6048              STR      r0,[r1,#4]            ;340
000138  e9c78403          STRD     r8,r4,[r7,#0xc]       ;341
00013c  a901              ADD      r1,sp,#4              ;341
00013e  980c              LDR      r0,[sp,#0x30]         ;341
000140  f7fffffe          BL       __aeabi_memcpy4
                  |L3.324|
000144  6ab8              LDR      r0,[r7,#0x28]         ;345
000146  1e40              SUBS     r0,r0,#1              ;345
000148  62b8              STR      r0,[r7,#0x28]         ;347
00014a  2001              MOVS     r0,#1                 ;347
00014c  e7c3              B        |L3.214|
;;;349    
                          ENDP

00014e  0000              DCW      0x0000
                  |L3.336|
                          DCD      ||.constdata||

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

                  decode_mcu_DC_refine PROC
;;;441    METHODDEF(boolean)
;;;442    decode_mcu_DC_refine (j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
000000  e92d43f0          PUSH     {r4-r9,lr}
;;;443    {   
000004  4604              MOV      r4,r0
000006  4689              MOV      r9,r1
;;;444      phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
;;;445      int p1 = 1 << cinfo->Al;	/* 1 in the bit position being coded */
000008  f8d061bc          LDR      r6,[r0,#0x1bc]
00000c  f8d0119c          LDR      r1,[r0,#0x19c]
000010  2001              MOVS     r0,#1
;;;446      int blkn;
;;;447      JBLOCKROW block;
;;;448      BITREAD_STATE_VARS;
;;;449    
;;;450      /* Process restart marker if needed; may have to suspend */
;;;451      if (cinfo->restart_interval) {
000012  f8d42114          LDR      r2,[r4,#0x114]
000016  b085              SUB      sp,sp,#0x14           ;443
000018  fa00f801          LSL      r8,r0,r1              ;445
00001c  b12a              CBZ      r2,|L4.42|
;;;452        if (entropy->restarts_to_go == 0)
00001e  6ab0              LDR      r0,[r6,#0x28]
000020  b918              CBNZ     r0,|L4.42|
;;;453          if (! process_restart(cinfo))
000022  4620              MOV      r0,r4
000024  f7fffffe          BL       process_restart
000028  b198              CBZ      r0,|L4.82|
                  |L4.42|
;;;454    	return FALSE;
;;;455      }
;;;456    
;;;457      /* Not worth the cycles to check insufficient_data here,
;;;458       * since we will not change the data anyway if we read zeroes.
;;;459       */
;;;460    
;;;461      /* Load up working state */
;;;462      BITREAD_LOAD_STATE(cinfo,entropy->bitstate);
00002a  9404              STR      r4,[sp,#0x10]
00002c  69a0              LDR      r0,[r4,#0x18]
;;;463    
;;;464      /* Outer loop handles each block in the MCU */
;;;465    
;;;466      for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
00002e  2500              MOVS     r5,#0
000030  6801              LDR      r1,[r0,#0]            ;462
000032  9100              STR      r1,[sp,#0]            ;462
000034  6840              LDR      r0,[r0,#4]            ;462
000036  9001              STR      r0,[sp,#4]            ;462
000038  e9d61203          LDRD     r1,r2,[r6,#0xc]
00003c  e019              B        |L4.114|
;;;467        block = MCU_data[blkn];
00003e  bf00              NOP      
                  |L4.64|
000040  f8597025          LDR      r7,[r9,r5,LSL #2]
;;;468    
;;;469        /* Encoded data is simply the next bit of the two's-complement DC value */
;;;470        CHECK_BIT_BUFFER(br_state, 1, return FALSE);
000044  2a01              CMP      r2,#1
000046  da0a              BGE      |L4.94|
000048  2301              MOVS     r3,#1
00004a  4668              MOV      r0,sp
00004c  f7fffffe          BL       jpeg_fill_bit_buffer
000050  b918              CBNZ     r0,|L4.90|
                  |L4.82|
000052  2000              MOVS     r0,#0
                  |L4.84|
;;;471        if (GET_BITS(1))
;;;472          (*block)[0] |= p1;
;;;473        /* Note: since we use |=, repeating the assignment later is safe */
;;;474      }
;;;475    
;;;476      /* Completed MCU, so update state */
;;;477      BITREAD_SAVE_STATE(cinfo,entropy->bitstate);
;;;478    
;;;479      /* Account for restart interval (no-op if not using restarts) */
;;;480      entropy->restarts_to_go--;
;;;481    
;;;482      return TRUE;
;;;483    }
000054  b005              ADD      sp,sp,#0x14
000056  e8bd83f0          POP      {r4-r9,pc}
                  |L4.90|
00005a  e9dd1202          LDRD     r1,r2,[sp,#8]         ;470
                  |L4.94|
00005e  1e52              SUBS     r2,r2,#1              ;471
000060  fa41f002          ASR      r0,r1,r2              ;471
000064  07c0              LSLS     r0,r0,#31             ;471
000066  d003              BEQ      |L4.112|
000068  8838              LDRH     r0,[r7,#0]            ;472
00006a  ea400008          ORR      r0,r0,r8              ;472
00006e  8038              STRH     r0,[r7,#0]            ;472
                  |L4.112|
000070  1c6d              ADDS     r5,r5,#1              ;466
                  |L4.114|
000072  f8d40164          LDR      r0,[r4,#0x164]        ;466
000076  42a8              CMP      r0,r5                 ;466
000078  dce2              BGT      |L4.64|
00007a  69a3              LDR      r3,[r4,#0x18]         ;477
00007c  9800              LDR      r0,[sp,#0]            ;477
00007e  6018              STR      r0,[r3,#0]            ;477
000080  69a3              LDR      r3,[r4,#0x18]         ;477
000082  9801              LDR      r0,[sp,#4]            ;477
000084  6058              STR      r0,[r3,#4]            ;477
000086  e9c61203          STRD     r1,r2,[r6,#0xc]       ;480
00008a  6ab0              LDR      r0,[r6,#0x28]         ;480
00008c  1e40              SUBS     r0,r0,#1              ;480
00008e  62b0              STR      r0,[r6,#0x28]         ;482
000090  2001              MOVS     r0,#1                 ;482
000092  e7df              B        |L4.84|
;;;484    
                          ENDP


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

                  jinit_phuff_decoder PROC
;;;640    GLOBAL(void)
;;;641    jinit_phuff_decoder (j_decompress_ptr cinfo)
000000  b510              PUSH     {r4,lr}
;;;642    {
000002  4604              MOV      r4,r0
;;;643      phuff_entropy_ptr entropy;
;;;644      int *coef_bit_ptr;
;;;645      int ci, i;
;;;646    
;;;647      entropy = (phuff_entropy_ptr)
000004  6840              LDR      r0,[r0,#4]
000006  2240              MOVS     r2,#0x40
000008  6803              LDR      r3,[r0,#0]
00000a  2101              MOVS     r1,#1
00000c  4620              MOV      r0,r4
00000e  4798              BLX      r3
;;;648        (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;649    				SIZEOF(phuff_entropy_decoder));
;;;650      cinfo->entropy = (struct jpeg_entropy_decoder *) entropy;
;;;651      entropy->pub.start_pass = start_pass_phuff_decoder;
000010  4910              LDR      r1,|L5.84|
000012  f8c401bc          STR      r0,[r4,#0x1bc]
;;;652    
;;;653      /* Mark derived tables unallocated */
;;;654      for (i = 0; i < NUM_HUFF_TBLS; i++) {
000016  6001              STR      r1,[r0,#0]
000018  2100              MOVS     r1,#0
00001a  460a              MOV      r2,r1
                  |L5.28|
;;;655        entropy->derived_tbls[i] = NULL;
00001c  eb000381          ADD      r3,r0,r1,LSL #2
000020  1c49              ADDS     r1,r1,#1              ;654
000022  62da              STR      r2,[r3,#0x2c]         ;654
000024  2904              CMP      r1,#4                 ;654
000026  dbf9              BLT      |L5.28|
;;;656      }
;;;657    
;;;658      /* Create progression status table */
;;;659      cinfo->coef_bits = (int (*)[DCTSIZE2])
000028  6a60              LDR      r0,[r4,#0x24]
00002a  0202              LSLS     r2,r0,#8
00002c  6860              LDR      r0,[r4,#4]
00002e  2101              MOVS     r1,#1
000030  6803              LDR      r3,[r0,#0]
000032  4620              MOV      r0,r4
000034  4798              BLX      r3
;;;660        (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;661    				cinfo->num_components*DCTSIZE2*SIZEOF(int));
;;;662      coef_bit_ptr = & cinfo->coef_bits[0][0];
;;;663      for (ci = 0; ci < cinfo->num_components; ci++) 
000036  2200              MOVS     r2,#0
;;;664        for (i = 0; i < DCTSIZE2; i++)
;;;665          *coef_bit_ptr++ = -1;
000038  1e53              SUBS     r3,r2,#1
00003a  f8c400a0          STR      r0,[r4,#0xa0]         ;663
00003e  e005              B        |L5.76|
                  |L5.64|
000040  2100              MOVS     r1,#0                 ;664
                  |L5.66|
000042  c008              STM      r0!,{r3}
000044  1c49              ADDS     r1,r1,#1              ;664
000046  2940              CMP      r1,#0x40              ;664
000048  dbfb              BLT      |L5.66|
00004a  1c52              ADDS     r2,r2,#1              ;663
                  |L5.76|
00004c  6a61              LDR      r1,[r4,#0x24]         ;663
00004e  4291              CMP      r1,r2                 ;663
000050  dcf6              BGT      |L5.64|
;;;666    }
000052  bd10              POP      {r4,pc}
;;;667    
                          ENDP

                  |L5.84|
                          DCD      start_pass_phuff_decoder

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

                  process_restart PROC
;;;227    LOCAL(boolean)
;;;228    process_restart (j_decompress_ptr cinfo)
000000  b570              PUSH     {r4-r6,lr}
;;;229    {
000002  4605              MOV      r5,r0
;;;230      phuff_entropy_ptr entropy = (phuff_entropy_ptr) cinfo->entropy;
;;;231      int ci;
;;;232    
;;;233      /* Throw away any unused bits remaining in bit buffer; */
;;;234      /* include any full bytes in next_marker's count of discarded bytes */
;;;235      cinfo->marker->discarded_bytes += entropy->bitstate.bits_left / 8;
000004  f8d041bc          LDR      r4,[r0,#0x1bc]
000008  f8d511b8          LDR      r1,[r5,#0x1b8]
00000c  6920              LDR      r0,[r4,#0x10]
00000e  698a              LDR      r2,[r1,#0x18]
000010  17c3              ASRS     r3,r0,#31
000012  eb007053          ADD      r0,r0,r3,LSR #29
000016  eb0200e0          ADD      r0,r2,r0,ASR #3

⌨️ 快捷键说明

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