[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