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

📄 jfdctint.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;;;214       * We remove the PASS1_BITS scaling, but leave the results scaled up
;;;215       * by an overall factor of 8.
;;;216       */
;;;217    
;;;218      dataptr = data;
;;;219      for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
000130  f8dde004          LDR      lr,[sp,#4]
000134  f04f0b07          MOV      r11,#7
                  |L1.312|
;;;220        tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
;;;221        tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
000138  f8de10e0          LDR      r1,[lr,#0xe0]
00013c  f8de0000          LDR      r0,[lr,#0]
;;;222        tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
;;;223        tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
;;;224        tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
;;;225        tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
000140  f8de50a0          LDR      r5,[lr,#0xa0]
000144  f8de4040          LDR      r4,[lr,#0x40]
;;;226        tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
;;;227        tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
000148  f8de7080          LDR      r7,[lr,#0x80]
00014c  f8de6060          LDR      r6,[lr,#0x60]
000150  eba00a01          SUB      r10,r0,r1             ;221
000154  f8de30c0          LDR      r3,[lr,#0xc0]         ;223
000158  f8de2020          LDR      r2,[lr,#0x20]         ;223
00015c  eba40805          SUB      r8,r4,r5              ;225
000160  4408              ADD      r0,r0,r1              ;220
000162  19f1              ADDS     r1,r6,r7              ;226
000164  eba20903          SUB      r9,r2,r3              ;223
000168  442c              ADD      r4,r4,r5              ;224
;;;228        
;;;229        /* Even part per LL&M figure 1 --- note that published figure is faulty;
;;;230         * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
;;;231         */
;;;232        
;;;233        tmp10 = tmp0 + tmp3;
00016a  1845              ADDS     r5,r0,r1
;;;234        tmp13 = tmp0 - tmp3;
00016c  1a40              SUBS     r0,r0,r1
00016e  441a              ADD      r2,r2,r3              ;222
;;;235        tmp11 = tmp1 + tmp2;
000170  1911              ADDS     r1,r2,r4
;;;236        tmp12 = tmp1 - tmp2;
;;;237        
;;;238        dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp11, PASS1_BITS);
000172  186b              ADDS     r3,r5,r1
000174  1c9b              ADDS     r3,r3,#2
;;;239        dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp10 - tmp11, PASS1_BITS);
000176  1a69              SUBS     r1,r5,r1
000178  109b              ASRS     r3,r3,#2              ;238
00017a  1c89              ADDS     r1,r1,#2
;;;240        
;;;241        z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
00017c  f8ce3000          STR      r3,[lr,#0]
000180  1b12              SUBS     r2,r2,r4              ;236
000182  1089              ASRS     r1,r1,#2              ;239
000184  f8ce1080          STR      r1,[lr,#0x80]
000188  1811              ADDS     r1,r2,r0
00018a  f2411351          MOV      r3,#0x1151
00018e  4359              MULS     r1,r3,r1
;;;242        dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
000190  f640433f          MOV      r3,#0xc3f
000194  4358              MULS     r0,r3,r0
000196  eb010040          ADD      r0,r1,r0,LSL #1
00019a  f5004080          ADD      r0,r0,#0x4000
00019e  13c0              ASRS     r0,r0,#15
;;;243    					   CONST_BITS+PASS1_BITS);
;;;244        dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
0001a0  f8ce0040          STR      r0,[lr,#0x40]
0001a4  482f              LDR      r0,|L1.612|
0001a6  eba60c07          SUB      r12,r6,r7             ;227
0001aa  fb001002          MLA      r0,r0,r2,r1
0001ae  f5004080          ADD      r0,r0,#0x4000
0001b2  13c0              ASRS     r0,r0,#15
;;;245    					   CONST_BITS+PASS1_BITS);
;;;246        
;;;247        /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
;;;248         * cK represents cos(K*pi/16).
;;;249         * i0..i3 in the paper are tmp4..tmp7 here.
;;;250         */
;;;251        
;;;252        z1 = tmp4 + tmp7;
;;;253        z2 = tmp5 + tmp6;
0001b4  f8ce00c0          STR      r0,[lr,#0xc0]
;;;254        z3 = tmp4 + tmp6;
0001b8  eb0c0009          ADD      r0,r12,r9
;;;255        z4 = tmp5 + tmp7;
0001bc  eb08010a          ADD      r1,r8,r10
;;;256        z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
0001c0  1842              ADDS     r2,r0,r1
0001c2  f24254a1          MOV      r4,#0x25a1
0001c6  4362              MULS     r2,r4,r2
0001c8  eb0c030a          ADD      r3,r12,r10            ;252
;;;257        
;;;258        tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
0001cc  f640148e          MOV      r4,#0x98e
0001d0  fb0cfc04          MUL      r12,r12,r4
;;;259        tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
0001d4  f24414b3          MOV      r4,#0x41b3
0001d8  fb08f604          MUL      r6,r8,r4
0001dc  eb080709          ADD      r7,r8,r9              ;253
;;;260        tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
0001e0  f2462554          MOV      r5,#0x6254
;;;261        tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
0001e4  9700              STR      r7,[sp,#0]
;;;262        z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
0001e6  4c20              LDR      r4,|L1.616|
0001e8  fb09f805          MUL      r8,r9,r5              ;260
0001ec  f243070b          MOV      r7,#0x300b            ;261
0001f0  fb0af507          MUL      r5,r10,r7             ;261
0001f4  4363              MULS     r3,r4,r3
;;;263        z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
0001f6  4c1d              LDR      r4,|L1.620|
0001f8  9f00              LDR      r7,[sp,#0]
0001fa  4367              MULS     r7,r4,r7
;;;264        z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
0001fc  eba02400          SUB      r4,r0,r0,LSL #8
000200  ebc41484          RSB      r4,r4,r4,LSL #6
000204  eba40080          SUB      r0,r4,r0,LSL #2
;;;265        z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
000208  4c19              LDR      r4,|L1.624|
;;;266        
;;;267        z3 += z5;
00020a  4410              ADD      r0,r0,r2
;;;268        z4 += z5;
00020c  fb012104          MLA      r1,r1,r4,r2
;;;269        
;;;270        dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp4 + z1 + z3,
000210  eb0c0203          ADD      r2,r12,r3
000214  4402              ADD      r2,r2,r0
000216  f5024280          ADD      r2,r2,#0x4000
00021a  ea4f32e2          ASR      r2,r2,#15
;;;271    					   CONST_BITS+PASS1_BITS);
;;;272        dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp5 + z2 + z4,
00021e  f8ce20e0          STR      r2,[lr,#0xe0]
000222  19f2              ADDS     r2,r6,r7
000224  440a              ADD      r2,r2,r1
000226  f5024280          ADD      r2,r2,#0x4000
00022a  ea4f32e2          ASR      r2,r2,#15
;;;273    					   CONST_BITS+PASS1_BITS);
;;;274        dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp6 + z2 + z3,
00022e  f8ce20a0          STR      r2,[lr,#0xa0]
000232  eb080207          ADD      r2,r8,r7
000236  4410              ADD      r0,r0,r2
000238  f5004080          ADD      r0,r0,#0x4000
00023c  ea4f30e0          ASR      r0,r0,#15
;;;275    					   CONST_BITS+PASS1_BITS);
;;;276        dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp7 + z1 + z4,
000240  f8ce0060          STR      r0,[lr,#0x60]
000244  18e8              ADDS     r0,r5,r3
000246  4408              ADD      r0,r0,r1
000248  f5004080          ADD      r0,r0,#0x4000
00024c  ea4f30e0          ASR      r0,r0,#15
;;;277    					   CONST_BITS+PASS1_BITS);
;;;278        
;;;279        dataptr++;			/* advance pointer to next column */
000250  f8ce0020          STR      r0,[lr,#0x20]
000254  f10e0e04          ADD      lr,lr,#4
000258  f1bb0b01          SUBS     r11,r11,#1            ;219
00025c  f57faf6c          BPL      |L1.312|
;;;280      }
;;;281    }
000260  e8bd8ffc          POP      {r2-r11,pc}
;;;282    
                          ENDP

                  |L1.612|
                          DCD      0xffffc4df
                  |L1.616|
                          DCD      0xffffe333
                  |L1.620|
                          DCD      0xffffadfd
                  |L1.624|
                          DCD      0xfffff384

⌨️ 快捷键说明

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