jdmainct.txt
来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 767 行 · 第 1/3 页
TXT
767 行
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\jdmainct.o --depend=.\Obj\jdmainct.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\GUI\JPEG\jdmainct.c]
THUMB
AREA ||i.alloc_funny_pointers||, CODE, READONLY, ALIGN=1
alloc_funny_pointers PROC
;;;156 LOCAL(void)
;;;157 alloc_funny_pointers (j_decompress_ptr cinfo)
000000 e92d47f0 PUSH {r4-r10,lr}
;;;158 /* Allocate space for the funny pointer lists.
;;;159 * This is done only once, not once per pass.
;;;160 */
;;;161 {
000004 4604 MOV r4,r0
;;;162 my_main_ptr pMain = (my_main_ptr) cinfo->main;
;;;163 int ci, rgroup;
;;;164 int M = cinfo->min_DCT_scaled_size;
;;;165 jpeg_component_info *compptr;
;;;166 JSAMPARRAY xbuf;
;;;167
;;;168 /* Get top-level space for component array pointers.
;;;169 * We alloc both arrays with one call to save a few cycles.
;;;170 */
;;;171 pMain->xbuffer[0] = (JSAMPIMAGE)
000006 f8d0a13c LDR r10,[r0,#0x13c]
00000a f8d071a8 LDR r7,[r0,#0x1a8]
00000e 6a40 LDR r0,[r0,#0x24]
000010 00c2 LSLS r2,r0,#3
000012 6860 LDR r0,[r4,#4]
000014 2101 MOVS r1,#1
000016 6803 LDR r3,[r0,#0]
000018 4620 MOV r0,r4
00001a 4798 BLX r3
;;;172 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;173 cinfo->num_components * 2 * SIZEOF(JSAMPARRAY));
;;;174 pMain->xbuffer[1] = pMain->xbuffer[0] + cinfo->num_components;
00001c 6238 STR r0,[r7,#0x20]
00001e 6a61 LDR r1,[r4,#0x24]
;;;175
;;;176 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
000020 2500 MOVS r5,#0
000022 eb000081 ADD r0,r0,r1,LSL #2 ;174
000026 6278 STR r0,[r7,#0x24]
000028 f8d460d8 LDR r6,[r4,#0xd8]
00002c e01d B |L1.106|
|L1.46|
;;;177 ci++, compptr++) {
;;;178 rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
00002e 6a71 LDR r1,[r6,#0x24]
000030 68f0 LDR r0,[r6,#0xc]
000032 4348 MULS r0,r1,r0
000034 f8d4113c LDR r1,[r4,#0x13c]
000038 fb90f8f1 SDIV r8,r0,r1
;;;179 cinfo->min_DCT_scaled_size; /* height of a row group of component */
;;;180 /* Get space for pointer lists --- M+4 row groups in each list.
;;;181 * We alloc both pointer lists with one call to save a few cycles.
;;;182 */
;;;183 xbuf = (JSAMPARRAY)
00003c f10a0004 ADD r0,r10,#4
000040 fb08f100 MUL r1,r8,r0
000044 6860 LDR r0,[r4,#4]
000046 4689 MOV r9,r1
000048 00ca LSLS r2,r1,#3
00004a 6803 LDR r3,[r0,#0]
00004c 2101 MOVS r1,#1
00004e 4620 MOV r0,r4
000050 4798 BLX r3
;;;184 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;185 2 * (rgroup * (M + 4)) * SIZEOF(JSAMPROW));
;;;186 xbuf += rgroup; /* want one row group at negative offsets */
;;;187 pMain->xbuffer[0][ci] = xbuf;
000052 6a39 LDR r1,[r7,#0x20]
000054 eb000088 ADD r0,r0,r8,LSL #2 ;186
000058 f8410025 STR r0,[r1,r5,LSL #2]
;;;188 xbuf += rgroup * (M + 4);
;;;189 pMain->xbuffer[1][ci] = xbuf;
00005c 6a79 LDR r1,[r7,#0x24]
00005e eb000089 ADD r0,r0,r9,LSL #2 ;188
000062 f8410025 STR r0,[r1,r5,LSL #2]
000066 1c6d ADDS r5,r5,#1 ;177
000068 3654 ADDS r6,r6,#0x54 ;177
|L1.106|
00006a 6a60 LDR r0,[r4,#0x24] ;176
00006c 42a8 CMP r0,r5 ;176
00006e dcde BGT |L1.46|
;;;190 }
;;;191 }
000070 e8bd87f0 POP {r4-r10,pc}
;;;192
ENDP
AREA ||i.jinit_d_main_controller||, CODE, READONLY, ALIGN=2
jinit_d_main_controller PROC
;;;475 GLOBAL(void)
;;;476 jinit_d_main_controller (j_decompress_ptr cinfo, boolean need_full_buffer)
000000 e92d47f0 PUSH {r4-r10,lr}
;;;477 {
000004 4604 MOV r4,r0
;;;478 my_main_ptr pMain;
;;;479 int ci, rgroup, ngroups;
;;;480 jpeg_component_info *compptr;
;;;481
;;;482 pMain = (my_main_ptr)
000006 6840 LDR r0,[r0,#4]
000008 460d MOV r5,r1 ;477
00000a 2238 MOVS r2,#0x38
00000c 6803 LDR r3,[r0,#0]
00000e 2101 MOVS r1,#1
000010 4620 MOV r0,r4
000012 4798 BLX r3
;;;483 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;484 SIZEOF(my_main_controller));
;;;485 cinfo->main = (struct jpeg_d_main_controller *) pMain;
;;;486 pMain->pub.start_pass = start_pass_main;
000014 4921 LDR r1,|L2.156|
000016 f8c401a8 STR r0,[r4,#0x1a8]
00001a 4680 MOV r8,r0 ;482
;;;487
;;;488 if (need_full_buffer) /* shouldn't happen */
00001c 6001 STR r1,[r0,#0]
00001e b135 CBZ r5,|L2.46|
;;;489 ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
000020 6821 LDR r1,[r4,#0]
000022 2004 MOVS r0,#4
000024 6148 STR r0,[r1,#0x14]
000026 6820 LDR r0,[r4,#0]
000028 6801 LDR r1,[r0,#0]
00002a 4620 MOV r0,r4
00002c 4788 BLX r1
|L2.46|
;;;490
;;;491 /* Allocate the workspace.
;;;492 * ngroups is the number of row groups we need.
;;;493 */
;;;494 if (cinfo->upsample->need_context_rows) {
00002e f8d401c4 LDR r0,[r4,#0x1c4]
000032 6880 LDR r0,[r0,#8]
000034 2800 CMP r0,#0
000036 f8d4013c LDR r0,[r4,#0x13c]
00003a d013 BEQ |L2.100|
;;;495 if (cinfo->min_DCT_scaled_size < 2) /* unsupported, see comments above */
00003c 2802 CMP r0,#2
00003e da06 BGE |L2.78|
;;;496 ERREXIT(cinfo, JERR_NOTIMPL);
000040 6821 LDR r1,[r4,#0]
000042 202f MOVS r0,#0x2f
000044 6148 STR r0,[r1,#0x14]
000046 6820 LDR r0,[r4,#0]
000048 6801 LDR r1,[r0,#0]
00004a 4620 MOV r0,r4
00004c 4788 BLX r1
|L2.78|
;;;497 alloc_funny_pointers(cinfo); /* Alloc space for xbuffer[] lists */
00004e 4620 MOV r0,r4
000050 f7fffffe BL alloc_funny_pointers
;;;498 ngroups = cinfo->min_DCT_scaled_size + 2;
000054 f8d4013c LDR r0,[r4,#0x13c]
000058 1c80 ADDS r0,r0,#2
|L2.90|
;;;499 } else {
;;;500 ngroups = cinfo->min_DCT_scaled_size;
00005a 4681 MOV r9,r0
;;;501 }
;;;502
;;;503 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
00005c 2600 MOVS r6,#0
00005e f8d450d8 LDR r5,[r4,#0xd8]
000062 e015 B |L2.144|
|L2.100|
000064 e7f9 B |L2.90|
|L2.102|
;;;504 ci++, compptr++) {
;;;505 rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
000066 68e9 LDR r1,[r5,#0xc]
000068 6a68 LDR r0,[r5,#0x24]
00006a f8d4213c LDR r2,[r4,#0x13c]
00006e 4341 MULS r1,r0,r1
000070 fb91f3f2 SDIV r3,r1,r2
;;;506 cinfo->min_DCT_scaled_size; /* height of a row group of component */
;;;507 pMain->buffer[ci] = (*cinfo->mem->alloc_sarray)
000074 69ea LDR r2,[r5,#0x1c]
000076 fb03f309 MUL r3,r3,r9
00007a 4342 MULS r2,r0,r2
00007c 6860 LDR r0,[r4,#4]
00007e 2101 MOVS r1,#1
000080 6887 LDR r7,[r0,#8]
000082 4620 MOV r0,r4
000084 47b8 BLX r7
000086 eb080186 ADD r1,r8,r6,LSL #2
00008a 1c76 ADDS r6,r6,#1 ;504
00008c 3554 ADDS r5,r5,#0x54 ;504
00008e 6088 STR r0,[r1,#8] ;504
|L2.144|
000090 6a60 LDR r0,[r4,#0x24] ;503
000092 42b0 CMP r0,r6 ;503
000094 dce7 BGT |L2.102|
;;;508 ((j_common_ptr) cinfo, JPOOL_IMAGE,
;;;509 compptr->width_in_blocks * compptr->DCT_scaled_size,
;;;510 (JDIMENSION) (rgroup * ngroups));
;;;511 }
;;;512 }
000096 e8bd87f0 POP {r4-r10,pc}
ENDP
00009a 0000 DCW 0x0000
|L2.156|
DCD start_pass_main
AREA ||i.make_funny_pointers||, CODE, READONLY, ALIGN=2
make_funny_pointers PROC
;;;194 LOCAL(void)
;;;195 make_funny_pointers (j_decompress_ptr cinfo)
000000 e92d4ff0 PUSH {r4-r11,lr}
;;;196 /* Create the funny pointer lists discussed in the comments above.
;;;197 * The actual workspace is already allocated (in pMain->buffer),
;;;198 * and the space for the pointer lists is allocated too.
;;;199 * This routine just fills in the curiously ordered lists.
;;;200 * This will be repeated at the beginning of each pass.
;;;201 */
;;;202 {
000004 4682 MOV r10,r0
;;;203 my_main_ptr pMain = (my_main_ptr) cinfo->main;
;;;204 int ci, i, rgroup;
;;;205 int M = cinfo->min_DCT_scaled_size;
;;;206 jpeg_component_info *compptr;
;;;207 JSAMPARRAY buf, xbuf0, xbuf1;
;;;208
;;;209 for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
000006 2200 MOVS r2,#0
000008 f8d0b1a8 LDR r11,[r0,#0x1a8]
00000c f8d0913c LDR r9,[r0,#0x13c]
000010 f8d080d8 LDR r8,[r0,#0xd8]
000014 e044 B |L3.160|
;;;210 ci++, compptr++) {
;;;211 rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
000016 bf00 NOP
|L3.24|
000018 f8d84024 LDR r4,[r8,#0x24]
00001c f8d8000c LDR r0,[r8,#0xc]
;;;212 cinfo->min_DCT_scaled_size; /* height of a row group of component */
;;;213 xbuf0 = pMain->xbuffer[0][ci];
000020 f8da113c LDR r1,[r10,#0x13c]
000024 4360 MULS r0,r4,r0 ;211
000026 fb90f0f1 SDIV r0,r0,r1 ;211
00002a f8db3020 LDR r3,[r11,#0x20]
;;;214 xbuf1 = pMain->xbuffer[1][ci];
;;;215 /* First copy the workspace pointers as-is */
;;;216 buf = pMain->buffer[ci];
00002e f8db1024 LDR r1,[r11,#0x24]
000032 f8537022 LDR r7,[r3,r2,LSL #2] ;213
000036 eb0b0382 ADD r3,r11,r2,LSL #2
00003a f8514022 LDR r4,[r1,r2,LSL #2] ;214
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?