📄 jdmarker.txt
字号:
00011c 62c1 STR r1,[r0,#0x2c]
00011e f89d110f LDRB r1,[sp,#0x10f]
000122 6301 STR r1,[r0,#0x30]
000124 f89d1110 LDRB r1,[sp,#0x110]
000128 6341 STR r1,[r0,#0x34]
00012a 6821 LDR r1,[r4,#0]
00012c f8c19014 STR r9,[r1,#0x14]
000130 6820 LDR r0,[r4,#0]
000132 2102 MOVS r1,#2
000134 6842 LDR r2,[r0,#4]
000136 4620 MOV r0,r4
000138 4790 BLX r2
;;;450 bits[9], bits[10], bits[11], bits[12],
;;;451 bits[13], bits[14], bits[15], bits[16]);
;;;452
;;;453 /* Here we just do minimal validation of the counts to avoid walking
;;;454 * off the end of our table space. jdhuff.c will check more carefully.
;;;455 */
;;;456 if (count > 256 || ((INT32) count) > length)
00013a f5ba7f80 CMP r10,#0x100
00013e dc01 BGT |L4.324|
000140 45da CMP r10,r11
000142 dd06 BLE |L4.338|
|L4.324|
;;;457 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
000144 6821 LDR r1,[r4,#0]
000146 2008 MOVS r0,#8
000148 6148 STR r0,[r1,#0x14]
00014a 6820 LDR r0,[r4,#0]
00014c 6801 LDR r1,[r0,#0]
00014e 4620 MOV r0,r4
000150 4788 BLX r1
|L4.338|
;;;458
;;;459 for (i = 0; i < count; i++)
000152 2000 MOVS r0,#0
000154 e011 B |L4.378|
|L4.342|
;;;460 INPUT_BYTE(cinfo, huffval[i], return FALSE);
000156 b94f CBNZ r7,|L4.364|
000158 68e9 LDR r1,[r5,#0xc]
00015a 4620 MOV r0,r4
00015c 4788 BLX r1
00015e b918 CBNZ r0,|L4.360|
|L4.352|
000160 2000 MOVS r0,#0
|L4.354|
;;;461
;;;462 length -= count;
;;;463
;;;464 if (index & 0x10) { /* AC table definition */
;;;465 index -= 0x10;
;;;466 htblptr = &cinfo->ac_huff_tbl_ptrs[index];
;;;467 } else { /* DC table definition */
;;;468 htblptr = &cinfo->dc_huff_tbl_ptrs[index];
;;;469 }
;;;470
;;;471 if (index < 0 || index >= NUM_HUFF_TBLS)
;;;472 ERREXIT1(cinfo, JERR_DHT_INDEX, index);
;;;473
;;;474 if (*htblptr == NULL)
;;;475 *htblptr = jpeg_alloc_huff_table((j_common_ptr) cinfo);
;;;476
;;;477 MEMCOPY((*htblptr)->bits, bits, SIZEOF((*htblptr)->bits));
;;;478 MEMCOPY((*htblptr)->huffval, huffval, SIZEOF((*htblptr)->huffval));
;;;479 }
;;;480
;;;481 if (length != 0)
;;;482 ERREXIT(cinfo, JERR_BAD_LENGTH);
;;;483
;;;484 INPUT_SYNC(cinfo);
;;;485 return TRUE;
;;;486 }
000162 b045 ADD sp,sp,#0x114
000164 e8bd8ff0 POP {r4-r11,pc}
|L4.360|
000168 e9d56700 LDRD r6,r7,[r5,#0] ;460
|L4.364|
00016c f8160b01 LDRB r0,[r6],#1 ;460
000170 f80d0009 STRB r0,[sp,r9] ;460
000174 1e7f SUBS r7,r7,#1 ;460
000176 f1090001 ADD r0,r9,#1 ;459
|L4.378|
00017a 4681 MOV r9,r0 ;459
00017c 4550 CMP r0,r10 ;459
00017e dbea BLT |L4.342|
000180 ea5f60c8 LSLS r0,r8,#27 ;464
000184 ebab0b0a SUB r11,r11,r10 ;462
000188 4640 MOV r0,r8 ;465
00018a d505 BPL |L4.408|
00018c f1a00810 SUB r8,r0,#0x10 ;465
000190 eb040088 ADD r0,r4,r8,LSL #2 ;466
000194 30c4 ADDS r0,r0,#0xc4 ;466
000196 e002 B |L4.414|
|L4.408|
000198 eb040080 ADD r0,r4,r0,LSL #2 ;468
00019c 30b4 ADDS r0,r0,#0xb4 ;468
|L4.414|
00019e 4681 MOV r9,r0 ;468
0001a0 f1b80f04 CMP r8,#4 ;471
0001a4 d309 BCC |L4.442|
0001a6 6821 LDR r1,[r4,#0] ;472
0001a8 201e MOVS r0,#0x1e ;472
0001aa 6148 STR r0,[r1,#0x14] ;472
0001ac 6821 LDR r1,[r4,#0] ;472
0001ae f8c18018 STR r8,[r1,#0x18] ;472
0001b2 6820 LDR r0,[r4,#0] ;472
0001b4 6801 LDR r1,[r0,#0] ;472
0001b6 4620 MOV r0,r4 ;472
0001b8 4788 BLX r1 ;472
|L4.442|
0001ba f8d90000 LDR r0,[r9,#0] ;474
0001be b920 CBNZ r0,|L4.458|
0001c0 4620 MOV r0,r4 ;475
0001c2 f7fffffe BL jpeg_alloc_huff_table
0001c6 f8c90000 STR r0,[r9,#0] ;475
|L4.458|
0001ca 2211 MOVS r2,#0x11 ;477
0001cc a940 ADD r1,sp,#0x100 ;477
0001ce f8d90000 LDR r0,[r9,#0] ;477
0001d2 f7fffffe BL __aeabi_memcpy4
0001d6 f8d90000 LDR r0,[r9,#0] ;478
0001da f44f7280 MOV r2,#0x100 ;478
0001de 3011 ADDS r0,r0,#0x11 ;478
0001e0 4669 MOV r1,sp ;478
0001e2 f7fffffe BL __aeabi_memcpy
|L4.486|
0001e6 f1bb0f10 CMP r11,#0x10 ;432
0001ea f73faf2c BGT |L4.70|
0001ee f1bb0f00 CMP r11,#0 ;481
0001f2 d006 BEQ |L4.514|
0001f4 6821 LDR r1,[r4,#0] ;482
0001f6 200b MOVS r0,#0xb ;482
0001f8 6148 STR r0,[r1,#0x14] ;482
0001fa 6820 LDR r0,[r4,#0] ;482
0001fc 6801 LDR r1,[r0,#0] ;482
0001fe 4620 MOV r0,r4 ;482
000200 4788 BLX r1 ;482
|L4.514|
000202 c5c0 STM r5!,{r6,r7} ;485
000204 2001 MOVS r0,#1 ;485
000206 e7ac B |L4.354|
;;;487
ENDP
AREA ||i.get_dqt||, CODE, READONLY, ALIGN=2
get_dqt PROC
;;;489 LOCAL(boolean)
;;;490 get_dqt (j_decompress_ptr cinfo)
000000 e92d4ff8 PUSH {r3-r11,lr}
;;;491 /* Process a DQT marker */
;;;492 {
;;;493 INT32 length;
;;;494 int n, i, prec;
;;;495 unsigned int tmp;
;;;496 JQUANT_TBL *quant_ptr;
;;;497 INPUT_VARS(cinfo);
000004 6984 LDR r4,[r0,#0x18]
000006 4607 MOV r7,r0 ;492
;;;498
;;;499 INPUT_2BYTES(cinfo, length, return FALSE);
000008 e9d45600 LDRD r5,r6,[r4,#0]
00000c b936 CBNZ r6,|L5.28|
00000e 68e1 LDR r1,[r4,#0xc]
000010 4638 MOV r0,r7
000012 4788 BLX r1
000014 2800 CMP r0,#0
000016 d06f BEQ |L5.248|
000018 e9d45600 LDRD r5,r6,[r4,#0]
|L5.28|
00001c f8150b01 LDRB r0,[r5],#1
000020 1e76 SUBS r6,r6,#1
000022 ea4f2800 LSL r8,r0,#8
000026 d106 BNE |L5.54|
000028 68e1 LDR r1,[r4,#0xc]
00002a 4638 MOV r0,r7
00002c 4788 BLX r1
00002e 2800 CMP r0,#0
000030 d062 BEQ |L5.248|
000032 e9d45600 LDRD r5,r6,[r4,#0]
|L5.54|
000036 f8150b01 LDRB r0,[r5],#1
00003a 1e76 SUBS r6,r6,#1
00003c 4440 ADD r0,r0,r8
;;;500 length -= 2;
00003e 1e80 SUBS r0,r0,#2
;;;501
;;;502 while (length > 0) {
000040 e09a B |L5.376|
|L5.66|
;;;503 INPUT_BYTE(cinfo, n, return FALSE);
000042 b936 CBNZ r6,|L5.82|
000044 68e1 LDR r1,[r4,#0xc]
000046 4638 MOV r0,r7
000048 4788 BLX r1
00004a 2800 CMP r0,#0
00004c d054 BEQ |L5.248|
00004e e9d45600 LDRD r5,r6,[r4,#0]
|L5.82|
000052 f8150b01 LDRB r0,[r5],#1
;;;504 prec = n >> 4;
;;;505 n &= 0x0F;
;;;506
;;;507 TRACEMS2(cinfo, 1, JTRC_DQT, n, prec);
000056 6839 LDR r1,[r7,#0]
000058 ea4f1b20 ASR r11,r0,#4 ;504
00005c f000080f AND r8,r0,#0xf ;505
000060 2051 MOVS r0,#0x51
000062 6148 STR r0,[r1,#0x14]
000064 6839 LDR r1,[r7,#0]
000066 1e76 SUBS r6,r6,#1 ;503
000068 f8c18018 STR r8,[r1,#0x18]
00006c 6838 LDR r0,[r7,#0]
00006e 2101 MOVS r1,#1
000070 f8c0b01c STR r11,[r0,#0x1c]
000074 6838 LDR r0,[r7,#0]
000076 6842 LDR r2,[r0,#4]
000078 4638 MOV r0,r7
00007a 4790 BLX r2
;;;508
;;;509 if (n >= NUM_QUANT_TBLS)
00007c f1b80f04 CMP r8,#4
000080 db09 BLT |L5.150|
;;;510 ERREXIT1(cinfo, JERR_DQT_INDEX, n);
000082 6839 LDR r1,[r7,#0]
000084 201f MOVS r0,#0x1f
000086 6148 STR r0,[r1,#0x14]
000088 6839 LDR r1,[r7,#0]
00008a f8c18018 STR r8,[r1,#0x18]
00008e 6838 LDR r0,[r7,#0]
000090 6801 LDR r1,[r0,#0]
000092 4638 MOV r0,r7
000094 4788 BLX r1
|L5.150|
;;;511
;;;512 if (cinfo->quant_tbl_ptrs[n] == NULL)
000096 eb070088 ADD r0,r7,r8,LSL #2
00009a 4680 MOV r8,r0
00009c f8d000a4 LDR r0,[r0,#0xa4]
0000a0 b920 CBNZ r0,|L5.172|
;;;513 cinfo->quant_tbl_ptrs[n] = jpeg_alloc_quant_table((j_common_ptr) cinfo);
0000a2 4638 MOV r0,r7
0000a4 f7fffffe BL jpeg_alloc_quant_table
0000a8 f8c800a4 STR r0,[r8,#0xa4]
|L5.172|
;;;514 quant_ptr = cinfo->quant_tbl_ptrs[n];
;;;515
;;;516 for (i = 0; i < DCTSIZE2; i++) {
0000ac f8d8a0a4 LDR r10,[r8,#0xa4]
0000b0 f04f0800 MOV r8,#0
|L5.180|
;;;517 if (prec)
0000b4 f1bb0f00 CMP r11,#0
0000b8 d019 BEQ |L5.238|
;;;518 INPUT_2BYTES(cinfo, tmp, return FALSE);
0000ba b92e CBNZ r6,|L5.200|
0000bc 68e1 LDR r1,[r4,#0xc]
0000be 4638 MOV r0,r7
0000c0 4788 BLX r1
0000c2 b1c8 CBZ r0,|L5.248|
0000c4 e9d45600 LDRD r5,r6,[r4,#0]
|L5.200|
0000c8 f8150b01 LDRB r0,[r5],#1
0000cc 1e76 SUBS r6,r6,#1
0000ce ea4f2000 LSL r0,r0,#8
0000d2 9000 STR r0,[sp,#0]
0000d4 d105 BNE |L5.226|
0000d6 68e1 LDR r1,[r4,#0xc]
0000d8 4638 MOV r0,r7
0000da 4788 BLX r1
0000dc b160 CBZ r0,|L5.248|
0000de e9d45600 LDRD r5,r6,[r4,#0]
|L5.226|
0000e2 f8150b01 LDRB r0,[r5],#1
0000e6 9900 LDR r1,[sp,#0]
0000e8 1e76 SUBS r6,r6,#1
0000ea 4408 ADD r0,r0,r1
0000ec e00c B |L5.264|
|L5.238|
;;;519 else
;;;520 INPUT_BYTE(cinfo, tmp, return FALSE);
0000ee b946 CBNZ r6,|L5.258|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -