[FFmpeg-devel] [PATCH] Optimization of original IFF codec

Sebastian Vater cdgs.basty
Mon Apr 26 20:31:26 CEST 2010


M?ns Rullg?rd a ?crit :
> Sebastian Vater <cdgs.basty at googlemail.com> writes:
>
>   
>> I also took a look on disassembly output...the shift out-side the loop
>> for lut init is only done once, gcc optimizes that and just puts the
>> precalculated shift-result into the correct positions.
>>     
>
> How many different shift positions are there?  What hardware are you
> benchmarking this on
AMD Athlon XP+ 2100.

If you look at the source code in libavcodec/iff.c, you will notice that
decodeplane8 is ONLY and ONLY called after a change to plane, so that
has to be recalculated anyway for each call to it. ;-)

I think that really explains it all! But if you wish to look at
disassembly output of both, here is it, gcc is really clever this time.

Unfortunately, my statement about doing the shift only once is only
half-correct it's only in decodeplane32, decodeplane8 really calculates
it for each entry...

So here have fun with disassembly output of both (I marked the start of
inlined decodeplane8):

decode_frame_ilbm disassembly with decodeplane8 inlined:
00000370 <decode_frame_ilbm>:
 370:   55                      push   %ebp
 371:   57                      push   %edi
 372:   56                      push   %esi
 373:   53                      push   %ebx
 374:   83 ec 6c                sub    $0x6c,%esp
 377:   8b 84 24 8c 00 00 00    mov    0x8c(%esp),%eax
 37e:   8b 94 24 80 00 00 00    mov    0x80(%esp),%edx
 385:   8b ac 24 80 00 00 00    mov    0x80(%esp),%ebp
 38c:   8b 48 10                mov    0x10(%eax),%ecx
 38f:   8b 92 88 00 00 00       mov    0x88(%edx),%edx
 395:   8b 40 14                mov    0x14(%eax),%eax
 398:   89 2c 24                mov    %ebp,(%esp)
 39b:   89 4c 24 28             mov    %ecx,0x28(%esp)
 39f:   89 54 24 14             mov    %edx,0x14(%esp)
 3a3:   89 44 24 10             mov    %eax,0x10(%esp)
 3a7:   89 54 24 04             mov    %edx,0x4(%esp)
 3ab:   ff 95 44 02 00 00       call   *0x244(%ebp)
 3b1:   85 c0                   test   %eax,%eax
 3b3:   0f 88 4f 03 00 00       js     708 <decode_frame_ilbm+0x398>
 3b9:   8b 94 24 80 00 00 00    mov    0x80(%esp),%edx
 3c0:   8b 44 24 28             mov    0x28(%esp),%eax
 3c4:   03 44 24 10             add    0x10(%esp),%eax
 3c8:   83 7a 34 0b             cmpl   $0xb,0x34(%edx)
 3cc:   89 44 24 18             mov    %eax,0x18(%esp)
 3d0:   0f 84 11 01 00 00       je     4e7 <decode_frame_ilbm+0x177>
 3d6:   8b 42 2c                mov    0x2c(%edx),%eax
 3d9:   31 ff                   xor    %edi,%edi
 3db:   85 c0                   test   %eax,%eax
 3dd:   75 18                   jne    3f7 <decode_frame_ilbm+0x87>
 3df:   e9 cb 00 00 00          jmp    4af <decode_frame_ilbm+0x13f>
 3e4:   8b 84 24 80 00 00 00    mov    0x80(%esp),%eax
 3eb:   83 c7 01                add    $0x1,%edi
 3ee:   39 78 2c                cmp    %edi,0x2c(%eax)
 3f1:   0f 86 b8 00 00 00       jbe    4af <decode_frame_ilbm+0x13f>
 3f7:   8b 94 24 80 00 00 00    mov    0x80(%esp),%edx
 3fe:   89 fe                   mov    %edi,%esi
 400:   8b 6c 24 14             mov    0x14(%esp),%ebp
 404:   8b 42 28                mov    0x28(%edx),%eax
 407:   0f af 75 10             imul   0x10(%ebp),%esi
 40b:   03 75 00                add    0x0(%ebp),%esi
 40e:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
 415:   00
 416:   c1 e0 02                shl    $0x2,%eax
 419:   89 44 24 08             mov    %eax,0x8(%esp)
 41d:   89 34 24                mov    %esi,(%esp)
 420:   e8 fc ff ff ff          call   421 <decode_frame_ilbm+0xb1>
 425:   8b 8c 24 80 00 00 00    mov    0x80(%esp),%ecx
 42c:   8b 91 80 01 00 00       mov    0x180(%ecx),%edx
 432:   85 d2                   test   %edx,%edx
 434:   74 ae                   je     3e4 <decode_frame_ilbm+0x74>
 436:   8b 6c 24 28             mov    0x28(%esp),%ebp
 43a:   39 6c 24 18             cmp    %ebp,0x18(%esp)
 43e:   76 a4                   jbe    3e4 <decode_frame_ilbm+0x74>
 440:   31 db                   xor    %ebx,%ebx
 442:   8b 6c 24 14             mov    0x14(%esp),%ebp
 446:   8b 4c 24 18             mov    0x18(%esp),%ecx
 44a:   2b 4c 24 28             sub    0x28(%esp),%ecx
 44e:   8b 85 cc 00 00 00       mov    0xcc(%ebp),%eax
 454:   39 c1                   cmp    %eax,%ecx
 456:   76 02                   jbe    45a <decode_frame_ilbm+0xea>
 458:   89 c1                   mov    %eax,%ecx
 45a:   89 14 24                mov    %edx,(%esp)
 45d:   8b 54 24 28             mov    0x28(%esp),%edx
 461:   89 f0                   mov    %esi,%eax
 463:   89 5c 24 04             mov    %ebx,0x4(%esp)
 467:   83 c3 01                add    $0x1,%ebx
 46a:   e8 91 fb ff ff          call   0 <decodeplane32>
 46f:   8b 8c 24 80 00 00 00    mov    0x80(%esp),%ecx
 476:   8b 44 24 14             mov    0x14(%esp),%eax
 47a:   8b 91 80 01 00 00       mov    0x180(%ecx),%edx
 480:   8b 80 cc 00 00 00       mov    0xcc(%eax),%eax
 486:   01 44 24 28             add    %eax,0x28(%esp)
 48a:   39 da                   cmp    %ebx,%edx
 48c:   0f 86 52 ff ff ff       jbe    3e4 <decode_frame_ilbm+0x74>
 492:   8b 6c 24 28             mov    0x28(%esp),%ebp
 496:   39 6c 24 18             cmp    %ebp,0x18(%esp)
 49a:   77 a6                   ja     442 <decode_frame_ilbm+0xd2>
 49c:   8b 84 24 80 00 00 00    mov    0x80(%esp),%eax
 4a3:   83 c7 01                add    $0x1,%edi
 4a6:   39 78 2c                cmp    %edi,0x2c(%eax)
 4a9:   0f 87 48 ff ff ff       ja     3f7 <decode_frame_ilbm+0x87>
 4af:   8b 84 24 88 00 00 00    mov    0x88(%esp),%eax
 4b6:   8b 54 24 14             mov    0x14(%esp),%edx
 4ba:   c7 00 cc 00 00 00       movl   $0xcc,(%eax)
 4c0:   8b 84 24 84 00 00 00    mov    0x84(%esp),%eax
 4c7:   c7 44 24 08 cc 00 00    movl   $0xcc,0x8(%esp)
 4ce:   00
 4cf:   89 54 24 04             mov    %edx,0x4(%esp)
 4d3:   89 04 24                mov    %eax,(%esp)
 4d6:   e8 fc ff ff ff          call   4d7 <decode_frame_ilbm+0x167>
 4db:   8b 44 24 10             mov    0x10(%esp),%eax
 4df:   83 c4 6c                add    $0x6c,%esp
 4e2:   5b                      pop    %ebx
 4e3:   5e                      pop    %esi
 4e4:   5f                      pop    %edi
 4e5:   5d                      pop    %ebp
 4e6:   c3                      ret
 4e7:   8b 52 2c                mov    0x2c(%edx),%edx
 4ea:   c7 44 24 1c 00 00 00    movl   $0x0,0x1c(%esp)
 4f1:   00
 4f2:   85 d2                   test   %edx,%edx
 4f4:   74 b9                   je     4af <decode_frame_ilbm+0x13f>
 4f6:   8b 6c 24 14             mov    0x14(%esp),%ebp
 4fa:   8b 44 24 1c             mov    0x1c(%esp),%eax
 4fe:   8b 8c 24 80 00 00 00    mov    0x80(%esp),%ecx
 505:   0f af 45 10             imul   0x10(%ebp),%eax
 509:   8b 55 00                mov    0x0(%ebp),%edx
 50c:   01 d0                   add    %edx,%eax
 50e:   89 44 24 20             mov    %eax,0x20(%esp)
 512:   8b 41 28                mov    0x28(%ecx),%eax
 515:   8b 6c 24 20             mov    0x20(%esp),%ebp
 519:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
 520:   00
 521:   89 44 24 08             mov    %eax,0x8(%esp)
 525:   89 2c 24                mov    %ebp,(%esp)
 528:   e8 fc ff ff ff          call   529 <decode_frame_ilbm+0x1b9>
 52d:   8b 84 24 80 00 00 00    mov    0x80(%esp),%eax
 534:   8b 88 80 01 00 00       mov    0x180(%eax),%ecx
 53a:   85 c9                   test   %ecx,%ecx
 53c:   0f 84 8b 01 00 00       je     6cd <decode_frame_ilbm+0x35d>
 542:   8b 54 24 28             mov    0x28(%esp),%edx
 546:   39 54 24 18             cmp    %edx,0x18(%esp)
 54a:   0f 86 7d 01 00 00       jbe    6cd <decode_frame_ilbm+0x35d>
 550:   8b 6c 24 14             mov    0x14(%esp),%ebp
 554:   8b 95 cc 00 00 00       mov    0xcc(%ebp),%edx
 55a:   31 ed                   xor    %ebp,%ebp
 55c:   8b 44 24 18             mov    0x18(%esp),%eax
 560:   2b 44 24 28             sub    0x28(%esp),%eax
 564:   39 d0                   cmp    %edx,%eax
 566:   76 02                   jbe    56a <decode_frame_ilbm+0x1fa>

inlined decodeplane8:

 568:   89 d0                   mov    %edx,%eax
 56a:   8d 14 c5 00 00 00 00    lea    0x0(,%eax,8),%edx
 571:   b8 00 00 00 01          mov    $0x1000000,%eax
 576:   8d 4c 0a ff             lea    -0x1(%edx,%ecx,1),%ecx
 57a:   89 ce                   mov    %ecx,%esi
 57c:   89 4c 24 24             mov    %ecx,0x24(%esp)
 580:   89 e9                   mov    %ebp,%ecx
 582:   83 e6 fc                and    $0xfffffffc,%esi
 585:   d3 e0                   shl    %cl,%eax
 587:   89 44 24 30             mov    %eax,0x30(%esp)
 58b:   b8 00 00 01 00          mov    $0x10000,%eax
 590:   d3 e0                   shl    %cl,%eax
 592:   89 44 24 34             mov    %eax,0x34(%esp)
 596:   b8 00 00 01 01          mov    $0x1010000,%eax
 59b:   d3 e0                   shl    %cl,%eax
 59d:   89 44 24 38             mov    %eax,0x38(%esp)
 5a1:   b8 00 01 00 00          mov    $0x100,%eax
 5a6:   d3 e0                   shl    %cl,%eax
 5a8:   89 44 24 3c             mov    %eax,0x3c(%esp)
 5ac:   b8 00 01 00 01          mov    $0x1000100,%eax
 5b1:   d3 e0                   shl    %cl,%eax
 5b3:   89 44 24 40             mov    %eax,0x40(%esp)
 5b7:   b8 00 01 01 00          mov    $0x10100,%eax
 5bc:   d3 e0                   shl    %cl,%eax
 5be:   89 44 24 44             mov    %eax,0x44(%esp)
 5c2:   b8 00 01 01 01          mov    $0x1010100,%eax
 5c7:   d3 e0                   shl    %cl,%eax
 5c9:   89 44 24 48             mov    %eax,0x48(%esp)
 5cd:   b8 01 00 00 00          mov    $0x1,%eax
 5d2:   d3 e0                   shl    %cl,%eax
 5d4:   89 44 24 4c             mov    %eax,0x4c(%esp)
 5d8:   b8 01 00 00 01          mov    $0x1000001,%eax
 5dd:   d3 e0                   shl    %cl,%eax
 5df:   89 44 24 50             mov    %eax,0x50(%esp)
 5e3:   b8 01 00 01 00          mov    $0x10001,%eax
 5e8:   d3 e0                   shl    %cl,%eax
 5ea:   89 44 24 54             mov    %eax,0x54(%esp)
 5ee:   b8 01 00 01 01          mov    $0x1010001,%eax
 5f3:   d3 e0                   shl    %cl,%eax
 5f5:   89 44 24 58             mov    %eax,0x58(%esp)
 5f9:   b8 01 01 00 00          mov    $0x101,%eax
 5fe:   d3 e0                   shl    %cl,%eax
 600:   89 44 24 5c             mov    %eax,0x5c(%esp)
 604:   b8 01 01 00 01          mov    $0x1000101,%eax
 609:   d3 e0                   shl    %cl,%eax
 60b:   89 44 24 60             mov    %eax,0x60(%esp)
 60f:   b8 01 01 01 00          mov    $0x10101,%eax
 614:   d3 e0                   shl    %cl,%eax
 616:   89 44 24 64             mov    %eax,0x64(%esp)
 61a:   b8 01 01 01 01          mov    $0x1010101,%eax
 61f:   d3 e0                   shl    %cl,%eax
 621:   85 d2                   test   %edx,%edx
 623:   c7 44 24 2c 00 00 00    movl   $0x0,0x2c(%esp)
 62a:   00
 62b:   89 44 24 68             mov    %eax,0x68(%esp)
 62f:   0f 88 bb 00 00 00       js     6f0 <decode_frame_ilbm+0x380>
 635:   8b 7c 24 28             mov    0x28(%esp),%edi
 639:   0f 88 b1 00 00 00       js     6f0 <decode_frame_ilbm+0x380>
 63f:   31 d2                   xor    %edx,%edx
 641:   85 f6                   test   %esi,%esi
 643:   74 27                   je     66c <decode_frame_ilbm+0x2fc>
 645:   89 d0                   mov    %edx,%eax
 647:   89 d1                   mov    %edx,%ecx
 649:   83 e1 07                and    $0x7,%ecx
 64c:   83 c2 04                add    $0x4,%edx
 64f:   c1 e8 03                shr    $0x3,%eax
 652:   8b 04 07                mov    (%edi,%eax,1),%eax
 655:   0f c8                   bswap  %eax
 657:   d3 e0                   shl    %cl,%eax
 659:   8b 4c 24 20             mov    0x20(%esp),%ecx
 65d:   c1 e8 fc                shr    $0xfc,%eax
 660:   8b 44 84 2c             mov    0x2c(%esp,%eax,4),%eax
 664:   09 44 0a fc             or     %eax,-0x4(%edx,%ecx,1)
 668:   39 d6                   cmp    %edx,%esi
 66a:   77 d9                   ja     645 <decode_frame_ilbm+0x2d5>
 66c:   39 74 24 24             cmp    %esi,0x24(%esp)
 670:   76 39                   jbe    6ab <decode_frame_ilbm+0x33b>
 672:   89 d3                   mov    %edx,%ebx
 674:   8b 54 24 20             mov    0x20(%esp),%edx
 678:   01 f2                   add    %esi,%edx
 67a:   8d b6 00 00 00 00       lea    0x0(%esi),%esi
 680:   89 d8                   mov    %ebx,%eax
 682:   89 d9                   mov    %ebx,%ecx
 684:   c1 e8 03                shr    $0x3,%eax
 687:   83 e1 07                and    $0x7,%ecx
 68a:   0f b6 04 07             movzbl (%edi,%eax,1),%eax
 68e:   83 c6 01                add    $0x1,%esi
 691:   83 c3 01                add    $0x1,%ebx
 694:   d3 e0                   shl    %cl,%eax
 696:   89 e9                   mov    %ebp,%ecx
 698:   c0 e8 07                shr    $0x7,%al
 69b:   0f b6 c0                movzbl %al,%eax
 69e:   d3 e0                   shl    %cl,%eax
 6a0:   08 02                   or     %al,(%edx)
 6a2:   83 c2 01                add    $0x1,%edx
 6a5:   3b 74 24 24             cmp    0x24(%esp),%esi
 6a9:   75 d5                   jne    680 <decode_frame_ilbm+0x310>
 6ab:   8b 44 24 14             mov    0x14(%esp),%eax
 6af:   83 c5 01                add    $0x1,%ebp
 6b2:   8b 90 cc 00 00 00       mov    0xcc(%eax),%edx
 6b8:   8b 84 24 80 00 00 00    mov    0x80(%esp),%eax
 6bf:   01 54 24 28             add    %edx,0x28(%esp)
 6c3:   8b 88 80 01 00 00       mov    0x180(%eax),%ecx
 6c9:   39 e9                   cmp    %ebp,%ecx
 6cb:   77 2a                   ja     6f7 <decode_frame_ilbm+0x387>
 6cd:   8b 94 24 80 00 00 00    mov    0x80(%esp),%edx
 6d4:   83 44 24 1c 01          addl   $0x1,0x1c(%esp)
 6d9:   8b 4c 24 1c             mov    0x1c(%esp),%ecx
 6dd:   39 4a 2c                cmp    %ecx,0x2c(%edx)
 6e0:   0f 87 10 fe ff ff       ja     4f6 <decode_frame_ilbm+0x186>
 6e6:   e9 c4 fd ff ff          jmp    4af <decode_frame_ilbm+0x13f>
 6eb:   90                      nop
 6ec:   8d 74 26 00             lea    0x0(%esi),%esi
 6f0:   31 ff                   xor    %edi,%edi
 6f2:   e9 48 ff ff ff          jmp    63f <decode_frame_ilbm+0x2cf>
 6f7:   8b 44 24 28             mov    0x28(%esp),%eax
 6fb:   39 44 24 18             cmp    %eax,0x18(%esp)
 6ff:   90                      nop
 700:   0f 87 56 fe ff ff       ja     55c <decode_frame_ilbm+0x1ec>
 706:   eb c5                   jmp    6cd <decode_frame_ilbm+0x35d>
 708:   c7 44 24 08 18 00 00    movl   $0x18,0x8(%esp)
 70f:   00
 710:   c7 44 24 04 10 00 00    movl   $0x10,0x4(%esp)
 717:   00
 718:   89 2c 24                mov    %ebp,(%esp)
 71b:   e8 fc ff ff ff          call   71c <decode_frame_ilbm+0x3ac>
 720:   c7 44 24 10 ff ff ff    movl   $0xffffffff,0x10(%esp)
 727:   ff
 728:   e9 ae fd ff ff          jmp    4db <decode_frame_ilbm+0x16b>
 72d:   8d 76 00                lea    0x0(%esi),%esi



decodeplane32 (not inlined because much slower with inline statement):
00000000 <decodeplane32>:
   0:   55                      push   %ebp
   1:   57                      push   %edi
   2:   89 d7                   mov    %edx,%edi
   4:   56                      push   %esi
   5:   89 c6                   mov    %eax,%esi
   7:   53                      push   %ebx
   8:   81 ec 04 01 00 00       sub    $0x104,%esp
   e:   8d 14 cd 00 00 00 00    lea    0x0(,%ecx,8),%edx
  15:   0f b6 8c 24 1c 01 00    movzbl 0x11c(%esp),%ecx
  1c:   00
  1d:   89 d0                   mov    %edx,%eax
  1f:   03 84 24 18 01 00 00    add    0x118(%esp),%eax
  26:   c7 84 24 c4 00 00 00    movl   $0x0,0xc4(%esp)
  2d:   00 00 00 00
  31:   c7 84 24 cc 00 00 00    movl   $0x0,0xcc(%esp)
  38:   00 00 00 00
  3c:   83 e8 01                sub    $0x1,%eax
  3f:   89 04 24                mov    %eax,(%esp)
  42:   89 c5                   mov    %eax,%ebp
  44:   b8 01 00 00 00          mov    $0x1,%eax
  49:   d3 e0                   shl    %cl,%eax
  4b:   83 e5 fc                and    $0xfffffffc,%ebp
  4e:   85 d2                   test   %edx,%edx
  50:   89 84 24 c8 00 00 00    mov    %eax,0xc8(%esp)
  57:   89 84 24 d0 00 00 00    mov    %eax,0xd0(%esp)
  5e:   c7 84 24 d4 00 00 00    movl   $0x0,0xd4(%esp)
  65:   00 00 00 00
  69:   89 84 24 d8 00 00 00    mov    %eax,0xd8(%esp)
  70:   c7 84 24 dc 00 00 00    movl   $0x0,0xdc(%esp)
  77:   00 00 00 00
  7b:   89 84 24 e0 00 00 00    mov    %eax,0xe0(%esp)
  82:   c7 84 24 e4 00 00 00    movl   $0x0,0xe4(%esp)
  89:   00 00 00 00
  8d:   89 84 24 e8 00 00 00    mov    %eax,0xe8(%esp)
  94:   c7 84 24 ec 00 00 00    movl   $0x0,0xec(%esp)
  9b:   00 00 00 00
  9f:   89 84 24 f0 00 00 00    mov    %eax,0xf0(%esp)
  a6:   c7 84 24 f4 00 00 00    movl   $0x0,0xf4(%esp)
  ad:   00 00 00 00
  b1:   89 84 24 f8 00 00 00    mov    %eax,0xf8(%esp)
  b8:   c7 84 24 fc 00 00 00    movl   $0x0,0xfc(%esp)
  bf:   00 00 00 00
  c3:   89 84 24 00 01 00 00    mov    %eax,0x100(%esp)
  ca:   c7 84 24 84 00 00 00    movl   $0x0,0x84(%esp)
  d1:   00 00 00 00
  d5:   c7 84 24 88 00 00 00    movl   $0x0,0x88(%esp)
  dc:   00 00 00 00
  e0:   89 84 24 8c 00 00 00    mov    %eax,0x8c(%esp)
  e7:   89 84 24 90 00 00 00    mov    %eax,0x90(%esp)
  ee:   c7 84 24 94 00 00 00    movl   $0x0,0x94(%esp)
  f5:   00 00 00 00
  f9:   c7 84 24 98 00 00 00    movl   $0x0,0x98(%esp)
 100:   00 00 00 00
 104:   89 84 24 9c 00 00 00    mov    %eax,0x9c(%esp)
 10b:   89 84 24 a0 00 00 00    mov    %eax,0xa0(%esp)
 112:   c7 84 24 a4 00 00 00    movl   $0x0,0xa4(%esp)
 119:   00 00 00 00
 11d:   c7 84 24 a8 00 00 00    movl   $0x0,0xa8(%esp)
 124:   00 00 00 00
 128:   89 84 24 ac 00 00 00    mov    %eax,0xac(%esp)
 12f:   89 84 24 b0 00 00 00    mov    %eax,0xb0(%esp)
 136:   c7 84 24 b4 00 00 00    movl   $0x0,0xb4(%esp)
 13d:   00 00 00 00
 141:   c7 84 24 b8 00 00 00    movl   $0x0,0xb8(%esp)
 148:   00 00 00 00
 14c:   89 84 24 bc 00 00 00    mov    %eax,0xbc(%esp)
 153:   89 84 24 c0 00 00 00    mov    %eax,0xc0(%esp)
 15a:   c7 44 24 44 00 00 00    movl   $0x0,0x44(%esp)
 161:   00
 162:   c7 44 24 48 00 00 00    movl   $0x0,0x48(%esp)
 169:   00
 16a:   c7 44 24 4c 00 00 00    movl   $0x0,0x4c(%esp)
 171:   00
 172:   c7 44 24 50 00 00 00    movl   $0x0,0x50(%esp)
 179:   00
 17a:   89 44 24 54             mov    %eax,0x54(%esp)
 17e:   89 44 24 58             mov    %eax,0x58(%esp)
 182:   89 44 24 5c             mov    %eax,0x5c(%esp)
 186:   89 44 24 60             mov    %eax,0x60(%esp)
 18a:   c7 44 24 64 00 00 00    movl   $0x0,0x64(%esp)
 191:   00
 192:   c7 44 24 68 00 00 00    movl   $0x0,0x68(%esp)
 199:   00
 19a:   c7 44 24 6c 00 00 00    movl   $0x0,0x6c(%esp)
 1a1:   00
 1a2:   c7 44 24 70 00 00 00    movl   $0x0,0x70(%esp)
 1a9:   00
 1aa:   89 44 24 74             mov    %eax,0x74(%esp)
 1ae:   89 44 24 78             mov    %eax,0x78(%esp)
 1b2:   89 44 24 7c             mov    %eax,0x7c(%esp)
 1b6:   89 84 24 80 00 00 00    mov    %eax,0x80(%esp)
 1bd:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
 1c4:   00
 1c5:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
 1cc:   00
 1cd:   c7 44 24 0c 00 00 00    movl   $0x0,0xc(%esp)
 1d4:   00
 1d5:   c7 44 24 10 00 00 00    movl   $0x0,0x10(%esp)
 1dc:   00
 1dd:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
 1e4:   00
 1e5:   c7 44 24 18 00 00 00    movl   $0x0,0x18(%esp)
 1ec:   00
 1ed:   c7 44 24 1c 00 00 00    movl   $0x0,0x1c(%esp)
 1f4:   00
 1f5:   c7 44 24 20 00 00 00    movl   $0x0,0x20(%esp)
 1fc:   00
 1fd:   89 44 24 24             mov    %eax,0x24(%esp)
 201:   89 44 24 28             mov    %eax,0x28(%esp)
 205:   89 44 24 2c             mov    %eax,0x2c(%esp)
 209:   89 44 24 30             mov    %eax,0x30(%esp)
 20d:   89 44 24 34             mov    %eax,0x34(%esp)
 211:   89 44 24 38             mov    %eax,0x38(%esp)
 215:   89 44 24 3c             mov    %eax,0x3c(%esp)
 219:   89 44 24 40             mov    %eax,0x40(%esp)
 21d:   0f 88 98 00 00 00       js     2bb <decodeplane32+0x2bb>
 223:   0f 88 92 00 00 00       js     2bb <decodeplane32+0x2bb>
 229:   31 db                   xor    %ebx,%ebx
 22b:   85 ed                   test   %ebp,%ebp
 22d:   74 42                   je     271 <decodeplane32+0x271>
 22f:   90                      nop
 230:   89 d8                   mov    %ebx,%eax
 232:   89 d9                   mov    %ebx,%ecx
 234:   c1 e8 03                shr    $0x3,%eax
 237:   83 e1 07                and    $0x7,%ecx
 23a:   8b 04 07                mov    (%edi,%eax,1),%eax
 23d:   83 c3 04                add    $0x4,%ebx
 240:   0f c8                   bswap  %eax
 242:   d3 e0                   shl    %cl,%eax
 244:   c1 e8 fc                shr    $0xfc,%eax
 247:   8b 54 84 04             mov    0x4(%esp,%eax,4),%edx
 24b:   09 54 9e f0             or     %edx,-0x10(%esi,%ebx,4)
 24f:   8b 54 84 44             mov    0x44(%esp,%eax,4),%edx
 253:   09 54 9e f4             or     %edx,-0xc(%esi,%ebx,4)
 257:   8b 94 84 84 00 00 00    mov    0x84(%esp,%eax,4),%edx
 25e:   09 54 9e f8             or     %edx,-0x8(%esi,%ebx,4)
 262:   8b 84 84 c4 00 00 00    mov    0xc4(%esp,%eax,4),%eax
 269:   09 44 9e fc             or     %eax,-0x4(%esi,%ebx,4)
 26d:   39 dd                   cmp    %ebx,%ebp
 26f:   77 bf                   ja     230 <decodeplane32+0x230>
 271:   39 2c 24                cmp    %ebp,(%esp)
 274:   76 3a                   jbe    2b0 <decodeplane32+0x2b0>
 276:   8d 14 ae                lea    (%esi,%ebp,4),%edx
 279:   89 ee                   mov    %ebp,%esi
 27b:   90                      nop
 27c:   8d 74 26 00             lea    0x0(%esi),%esi
 280:   89 d8                   mov    %ebx,%eax
 282:   89 d9                   mov    %ebx,%ecx
 284:   c1 e8 03                shr    $0x3,%eax
 287:   83 e1 07                and    $0x7,%ecx
 28a:   0f b6 04 07             movzbl (%edi,%eax,1),%eax
 28e:   83 c6 01                add    $0x1,%esi
 291:   83 c3 01                add    $0x1,%ebx
 294:   d3 e0                   shl    %cl,%eax
 296:   0f b6 8c 24 1c 01 00    movzbl 0x11c(%esp),%ecx
 29d:   00
 29e:   c0 e8 07                shr    $0x7,%al
 2a1:   0f b6 c0                movzbl %al,%eax
 2a4:   d3 e0                   shl    %cl,%eax
 2a6:   09 02                   or     %eax,(%edx)
 2a8:   83 c2 04                add    $0x4,%edx
 2ab:   39 34 24                cmp    %esi,(%esp)
 2ae:   77 d0                   ja     280 <decodeplane32+0x280>
 2b0:   81 c4 04 01 00 00       add    $0x104,%esp
 2b6:   5b                      pop    %ebx
 2b7:   5e                      pop    %esi
 2b8:   5f                      pop    %edi
 2b9:   5d                      pop    %ebp
 2ba:   c3                      ret
 2bb:   31 ff                   xor    %edi,%edi
 2bd:   e9 67 ff ff ff          jmp    229 <decodeplane32+0x229>
 2c2:   8d b4 26 00 00 00 00    lea    0x0(%esi),%esi
 2c9:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi

-- 

Best regards,
                   :-) Basty/CDGS (-:




More information about the ffmpeg-devel mailing list