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

📄 jquant2.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000038  e006              B        |L9.72|
                  |L9.58|
00003a  6983              LDR      r3,[r0,#0x18]         ;437
00003c  42a3              CMP      r3,r4                 ;437
00003e  dd01              BLE      |L9.68|
000040  4601              MOV      r1,r0                 ;437
000042  461c              MOV      r4,r3                 ;437
                  |L9.68|
000044  1c52              ADDS     r2,r2,#1              ;437
000046  3020              ADDS     r0,r0,#0x20           ;437
                  |L9.72|
000048  42aa              CMP      r2,r5                 ;437
00004a  dbf6              BLT      |L9.58|
                  |L9.76|
00004c  b3f1              CBZ      r1,|L9.204|
00004e  eb081445          ADD      r4,r8,r5,LSL #5       ;444
000052  6848              LDR      r0,[r1,#4]            ;446
000054  6060              STR      r0,[r4,#4]            ;446
000056  68c8              LDR      r0,[r1,#0xc]          ;446
000058  60e0              STR      r0,[r4,#0xc]          ;446
00005a  6948              LDR      r0,[r1,#0x14]         ;446
00005c  6160              STR      r0,[r4,#0x14]         ;447
00005e  6808              LDR      r0,[r1,#0]            ;447
000060  6020              STR      r0,[r4,#0]            ;447
000062  6888              LDR      r0,[r1,#8]            ;447
000064  60a0              STR      r0,[r4,#8]            ;447
000066  6908              LDR      r0,[r1,#0x10]         ;447
000068  6120              STR      r0,[r4,#0x10]         ;452
00006a  e9d12000          LDRD     r2,r0,[r1,#0]         ;453
00006e  e9d13e02          LDRD     r3,lr,[r1,#8]         ;453
000072  4683              MOV      r11,r0                ;452
000074  1a80              SUBS     r0,r0,r2              ;452
000076  0107              LSLS     r7,r0,#4              ;452
000078  ebae0003          SUB      r0,lr,r3              ;453
00007c  4699              MOV      r9,r3                 ;453
00007e  e9d16304          LDRD     r6,r3,[r1,#0x10]      ;460
000082  4692              MOV      r10,r2                ;452
000084  eb000040          ADD      r0,r0,r0,LSL #1       ;453
000088  0082              LSLS     r2,r0,#2              ;453
00008a  2001              MOVS     r0,#1                 ;459
00008c  eba30c06          SUB      r12,r3,r6             ;454
000090  4297              CMP      r7,r2                 ;460
000092  ea4f0ccc          LSL      r12,r12,#3            ;454
000096  dd01              BLE      |L9.156|
000098  463a              MOV      r2,r7                 ;460
00009a  2000              MOVS     r0,#0                 ;460
                  |L9.156|
00009c  4594              CMP      r12,r2                ;461
00009e  dd00              BLE      |L9.162|
0000a0  2002              MOVS     r0,#2                 ;461
                  |L9.162|
0000a2  b1d8              CBZ      r0,|L9.220|
0000a4  2801              CMP      r0,#1                 ;473
0000a6  d022              BEQ      |L9.238|
0000a8  2802              CMP      r0,#2                 ;473
0000aa  d106              BNE      |L9.186|
0000ac  1998              ADDS     r0,r3,r6              ;485
0000ae  eb0070d0          ADD      r0,r0,r0,LSR #31      ;485
0000b2  1040              ASRS     r0,r0,#1              ;485
0000b4  6148              STR      r0,[r1,#0x14]         ;487
0000b6  1c40              ADDS     r0,r0,#1              ;487
0000b8  6120              STR      r0,[r4,#0x10]         ;487
                  |L9.186|
0000ba  9800              LDR      r0,[sp,#0]            ;491
0000bc  f7fffffe          BL       update_box
0000c0  4621              MOV      r1,r4                 ;492
0000c2  9800              LDR      r0,[sp,#0]            ;492
0000c4  f7fffffe          BL       update_box
0000c8  1c6d              ADDS     r5,r5,#1
                  |L9.202|
0000ca  e000              B        |L9.206|
                  |L9.204|
0000cc  e002              B        |L9.212|
                  |L9.206|
0000ce  9803              LDR      r0,[sp,#0xc]          ;433
0000d0  4285              CMP      r5,r0                 ;433
0000d2  db9b              BLT      |L9.12|
                  |L9.212|
;;;494      }
;;;495      return numboxes;
0000d4  4628              MOV      r0,r5
;;;496    }
0000d6  b004              ADD      sp,sp,#0x10
0000d8  e8bd9ff0          POP      {r4-r12,pc}
                  |L9.220|
0000dc  eb0b000a          ADD      r0,r11,r10            ;475
0000e0  eb0070d0          ADD      r0,r0,r0,LSR #31      ;475
0000e4  1040              ASRS     r0,r0,#1              ;475
0000e6  6048              STR      r0,[r1,#4]            ;477
0000e8  1c40              ADDS     r0,r0,#1              ;477
0000ea  6020              STR      r0,[r4,#0]            ;478
0000ec  e7e5              B        |L9.186|
                  |L9.238|
0000ee  eb0e0009          ADD      r0,lr,r9              ;480
0000f2  eb0070d0          ADD      r0,r0,r0,LSR #31      ;480
0000f6  1040              ASRS     r0,r0,#1              ;480
0000f8  60c8              STR      r0,[r1,#0xc]          ;482
0000fa  1c40              ADDS     r0,r0,#1              ;482
0000fc  60a0              STR      r0,[r4,#8]            ;483
0000fe  e7dc              B        |L9.186|
;;;497    
                          ENDP


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

                  new_color_map_2_quant PROC
;;;1231   METHODDEF(void)
;;;1232   new_color_map_2_quant (j_decompress_ptr cinfo)
000000  f8d001cc          LDR      r0,[r0,#0x1cc]
;;;1233   {
;;;1234     my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
;;;1235   
;;;1236     /* Reset the inverse color map */
;;;1237     cquantize->needs_zeroed = TRUE;
000004  2101              MOVS     r1,#1
;;;1238   }
000006  61c1              STR      r1,[r0,#0x1c]
000008  4770              BX       lr
;;;1239   
                          ENDP


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

                  pass2_fs_dither PROC
;;;949    METHODDEF(void)
;;;950    pass2_fs_dither (j_decompress_ptr cinfo,
000000  e92d4fff          PUSH     {r0-r11,lr}
;;;951    		 JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
;;;952    /* This version performs Floyd-Steinberg dithering */
;;;953    {
000004  b093              SUB      sp,sp,#0x4c
;;;954      my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
000006  9813              LDR      r0,[sp,#0x4c]
;;;955      hist3d histogram = cquantize->histogram;
;;;956      register LOCFSERROR cur0, cur1, cur2;	/* current error or pixel value */
;;;957      LOCFSERROR belowerr0, belowerr1, belowerr2; /* error for pixel below cur */
;;;958      LOCFSERROR bpreverr0, bpreverr1, bpreverr2; /* error for below/prev col */
;;;959      register FSERRPTR errorptr;	/* => fserrors[] at column before current */
;;;960      JSAMPROW inptr;		/* => current input pixel */
;;;961      JSAMPROW outptr;		/* => current output pixel */
;;;962      histptr cachep;
;;;963      int dir;			/* +1 or -1 depending on direction */
;;;964      int dir3;			/* 3*dir, for advancing inptr & errorptr */
;;;965      int row;
;;;966      JDIMENSION col;
;;;967      JDIMENSION width = cinfo->output_width;
000008  9913              LDR      r1,[sp,#0x4c]
00000a  f8d091cc          LDR      r9,[r0,#0x1cc]        ;955
00000e  6f0b              LDR      r3,[r1,#0x70]         ;955
000010  f8d90018          LDR      r0,[r9,#0x18]
000014  f8d12144          LDR      r2,[r1,#0x144]        ;955
;;;968      JSAMPLE *range_limit = cinfo->sample_range_limit;
;;;969      int *error_limit = cquantize->error_limiter;
000018  9011              STR      r0,[sp,#0x44]
00001a  f8d91028          LDR      r1,[r9,#0x28]         ;967
;;;970      JSAMPROW colormap0 = cinfo->colormap[0];
00001e  9813              LDR      r0,[sp,#0x4c]
000020  9306              STR      r3,[sp,#0x18]
000022  f8d00088          LDR      r0,[r0,#0x88]
;;;971      JSAMPROW colormap1 = cinfo->colormap[1];
000026  9205              STR      r2,[sp,#0x14]
000028  6842              LDR      r2,[r0,#4]            ;969
;;;972      JSAMPROW colormap2 = cinfo->colormap[2];
00002a  9104              STR      r1,[sp,#0x10]
00002c  6883              LDR      r3,[r0,#8]            ;970
00002e  6800              LDR      r0,[r0,#0]            ;970
;;;973      SHIFT_TEMPS
;;;974    
;;;975      for (row = 0; row < num_rows; row++) {
000030  e9cd3201          STRD     r3,r2,[sp,#4]
000034  2100              MOVS     r1,#0
000036  9003              STR      r0,[sp,#0xc]
000038  9107              STR      r1,[sp,#0x1c]
00003a  4608              MOV      r0,r1
00003c  e0b5              B        |L11.426|
                  |L11.62|
;;;976        inptr = input_buf[row];
00003e  9914              LDR      r1,[sp,#0x50]
000040  f8515020          LDR      r5,[r1,r0,LSL #2]
;;;977        outptr = output_buf[row];
000044  9907              LDR      r1,[sp,#0x1c]
000046  9815              LDR      r0,[sp,#0x54]
000048  f8506021          LDR      r6,[r0,r1,LSL #2]
;;;978        if (cquantize->on_odd_row) {
00004c  f8d90024          LDR      r0,[r9,#0x24]
000050  b1a0              CBZ      r0,|L11.124|
;;;979          /* work right to left in this row */
;;;980          inptr += (width-1) * 3;	/* so point to rightmost pixel */
;;;981          outptr += width-1;
000052  9906              LDR      r1,[sp,#0x18]
000054  9806              LDR      r0,[sp,#0x18]         ;980
000056  440e              ADD      r6,r6,r1
000058  eb000040          ADD      r0,r0,r0,LSL #1       ;980
;;;982          dir = -1;
00005c  f04f31ff          MOV      r1,#0xffffffff
000060  4405              ADD      r5,r5,r0              ;980
;;;983          dir3 = -3;
;;;984          errorptr = cquantize->fserrors + (width+1)*3; /* => entry after last column */
000062  9108              STR      r1,[sp,#0x20]
000064  2206              MOVS     r2,#6
000066  f8d91020          LDR      r1,[r9,#0x20]
00006a  1eed              SUBS     r5,r5,#3              ;980
00006c  1e76              SUBS     r6,r6,#1              ;981
00006e  eb020040          ADD      r0,r2,r0,LSL #1
000072  180c              ADDS     r4,r1,r0
000074  f06f0a02          MVN      r10,#2                ;983
;;;985          cquantize->on_odd_row = FALSE; /* flip for next time */
000078  2000              MOVS     r0,#0
00007a  e005              B        |L11.136|
                  |L11.124|
;;;986        } else {
;;;987          /* work left to right in this row */
;;;988          dir = 1;
00007c  2001              MOVS     r0,#1
;;;989          dir3 = 3;
;;;990          errorptr = cquantize->fserrors; /* => entry before first real column */
00007e  9008              STR      r0,[sp,#0x20]
000080  f8d94020          LDR      r4,[r9,#0x20]
000084  f04f0a03          MOV      r10,#3                ;989
                  |L11.136|
;;;991          cquantize->on_odd_row = TRUE; /* flip for next time */
;;;992        }
;;;993        /* Preset error values: no error propagated to first pixel from left */
;;;994        cur0 = cur1 = cur2 = 0;
000088  2200              MOVS     r2,#0
;;;995        /* and no error propagated to row below yet */
;;;996        belowerr0 = belowerr1 = belowerr2 = 0;
00008a  f8c90024          STR      r0,[r9,#0x24]
;;;997        bpreverr0 = bpreverr1 = bpreverr2 = 0;
00008e  920f              STR      r2,[sp,#0x3c]
000090  920b              STR      r2,[sp,#0x2c]
000092  4613              MOV      r3,r2                 ;994
000094  4694              MOV      r12,r2                ;994
000096  920d              STR      r2,[sp,#0x34]         ;996
000098  920e              STR      r2,[sp,#0x38]         ;996
00009a  920a              STR      r2,[sp,#0x28]
;;;998    
;;;999        for (col = width; col > 0; col--) {
00009c  920c              STR      r2,[sp,#0x30]
00009e  9806              LDR      r0,[sp,#0x18]
0000a0  e077              B        |L11.402|
;;;1000         /* curN holds the error propagated from the previous pixel on the
;;;1001          * current line.  Add the error propagated from the previous line
;;;1002          * to form the complete error correction term for this pixel, and
;;;1003          * round the error term (which is expressed * 16) to an integer.
;;;1004          * RIGHT_SHIFT rounds towards minus infinity, so adding 8 is correct
;;;1005          * for either sign of the error value.
;;;1006          * Note: errorptr points to *previous* column's array entry.
;;;1007          */
;;;1008         cur0 = RIGHT_SHIFT(cur0 + errorptr[dir3+0] + 8, 4);
0000a2  bf00              NOP      
                  |L11.164|
0000a4  f934101a          LDRSH    r1,[r4,r10,LSL #1]
0000a8  f10c0008          ADD      r0,r12,#8
0000ac  4408              ADD      r0,r0,r1
0000ae  1101              ASRS     r1,r0,#4
;;;1009         cur1 = RIGHT_SHIFT(cur1 + errorptr[dir3+1] + 8, 4);
0000b0  eb04004a          ADD      r0,r4,r10,LSL #1
0000b4  9012              STR      r0,[sp,#0x48]
0000b6  f9b07002          LDRSH    r7,[r0,#2]
0000ba  3308              ADDS     r3,r3,#8
;;;1010         cur2 = RIGHT_SHIFT(cur2 + errorptr[dir3+2] + 8, 4);
0000bc  f9b00004          LDRSH    r0,[r0,#4]
0000c0  443b              ADD      r3,r3,r7              ;1009
0000c2  3208              ADDS     r2,r2,#8
;;;1011         /* Limit the error using transfer function set by init_error_limit.
;;;1012          * See comments with init_error_limit for rationale.
;;;1013          */
;;;1014         cur0 = error_limit[cur0];
0000c4  9f04              LDR      r7,[sp,#0x10]
0000c6  

⌨️ 快捷键说明

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