Feb 10, 2001

Saturation Add

MMXがある現代においては普通、paddusb。一方が固定ならテーブルルックアップでもいい。

…とふざけただけなのにチョイ切れされちゃったー。気休めだけど、カットオフ用のマスクを0x00fefeffにしておく? 気休めだけどね。saturation addを2バイト同時に行うのにx86では最小7命令かかります。3バイトsaturation addを、(7,7,8)または(7,7,7)ビットに丸めてしまうことで、+2命令で済ます福地案で現実的には問題ないでしょう。

 ; 2bytes                 ; 3bytes(fukuchi)
                        => and eax, 00fefeffh
                        => and ebx, 00fefeffh
 add eax, ebx           => add eax, ebx
 mov ebx, eax           => mov ebx, eax
 and ebx, 01000100h     => and ebx, 01010100h
 mov ecx, ebx           => mov ecx, ebx
 shr ecx, 8             => shr ecx, 8
 sub ebx, ecx           => sub ebx, ecx
 or  eax, ebx           => or  eax, ebx
(and eax, 00ff00ffh)    =>(and eax, 00fefeffh)

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com