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 + -
显示快捷键?