続・Intelのエンディアン変換命令?

しゅどうさんあたり調べてくれないかなぁと思って書いたんだけどサスガすぎ。確かにPrescottでえらい加速してるのはおもろいですな。NorthwoodはMicrocodeで処理してるんだろうけど、PrescottのLatency 1ってすごい。完全ハードワイヤードになったんだろうか。簡単だけど面積だけは食いそう。マジでエミュレーション対策かも。
ちなみにbswapというとhtonlとかだろうとおもって追っかけたら、LinuxFreeBSDもinline assemblerにちゃんと落とすマクロになってる。Linux FC3はオーソドックスに、/usr/include/bits/byteswap.hに

#  if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ \
      && !defined __pentium4__
#   define __bswap_32(x)                                                      \
     (__extension__                                                           \
      ({ register unsigned int __v, __x = (x);                                \
         if (__builtin_constant_p (__x))                                      \
           __v = __bswap_constant_32 (__x);                                   \
         else                                                                 \
           __asm__ ("rorw $8, %w0;"                                           \
                    "rorl $16, %0;"                                           \
                    "rorw $8, %w0"                                            \
                    : "=r" (__v)                                              \
                    : "0" (__x)                                               \
                    : "cc");                                                  \
         __v; }))
#  else
#   define __bswap_32(x) \
     (__extension__                                                           \
      ({ register unsigned int __v, __x = (x);                                \
         if (__builtin_constant_p (__x))                                      \
           __v = __bswap_constant_32 (__x);                                   \
         else                                                                 \
           __asm__ ("bswap %0" : "=r" (__v) : "0" (__x));                     \
         __v; }))
#  endif

てのがある。まぁ普通やろうとするとこうか。これに対しFreeBSD for i386は/usr/include/machine/endian.hで

#if defined(_KERNEL) && (defined(I486_CPU) || defined(I586_CPU) || defined(I686_
CPU)) && !defined(I386_CPU)

#define __byte_swap_long(x) \
__extension__ ({ register u_long __X = (x); \
   __asm ("bswap %0" \
        : "=r" (__X) \
        : "0" (__X)); \
   __X; })
#else

#define __byte_swap_long(x) \
__extension__ ({ register u_long __X = (x); \
   __asm ("xchgb %h1, %b1\n\trorl $16, %1\n\txchgb %h1, %b1" \
        : "=q" (__X) \
        : "0" (__X)); \
   __X; })
#endif

となってた。おおxchgb!xchg系というとreg<->memで使ってセマフォ作ることばっかり考えてしまってたが、こういう使い方もできるなぁ。いずれにせよ、bswap使わないほうが面白いという(笑)1つのレジスタを32/16/8bitに切って使えるIA-32ならではですなぁ。

JSSM大会

上京したのは日本セキュリティマネジメント学会の大会に参加するため。どっちかというと基調講演の某氏と、他モロモロの先生方に挨拶したかったのがメインという感じかも。目的は果たした・・・別件の打ち合わせも出来たし。ただ会えなかった人もいる・・・本当は懇親会に出るべきだったのかもしれないが、明日のことを考えると今日遅くなるとかなり辛いので帰ることにする。

ムシムシ大行進

帰ろうとすると妻から電話。出るとなんか家にムシが出たらしい(ハチ?!)。「早く帰ってきてー!!」という妻の悲痛な叫び。状況聞いてると突然またムシが活動始めたらしく妻がキャアキャア言い出すわ娘の泣き声も聞こえるわ阿鼻叫喚の様相。こりゃいかん。とはいえ帰るには3時間かかる・・・早くて10時だ。新幹線を押さえようとするが結構混んでて近いのが取れないし、例によって中央線も山手線も乱れてるので東京駅にいつ着くやら。とにかく出来るだけ早く帰ることを伝える。その後もメールがビシバシ飛んで来た。落ち着かないーとか、家から一時避難しようかーとか。結局なんとか家にいたらしい・・・結局ムシはその後も見つからず(それがかえって妻にとって落ち着かないらしい)。
なんか世の女性には、配偶者の存在価値の中で「虫退治してくれる」というのが極めて高いウェイトを占める方々が時々いらっしゃいますな。うちの妻はそのタイプ。知り合いにも数人そういう人がいる(例えば有名人だと秋山ゆかり嬢はメッチャそのこと強調しとったな(^^;)。亭主元気で留守がいいというが(^^;うちは私がムシ取りする限りは「留守がいい」といわれずに済みそうだ。

クレジットカード情報ダダ漏れ

MasterCardのクレジットカード情報が流出(ITmedia)
すご・・・マジっすか?って感じ。まさに空前絶後。かなりの金かけてるはずのカード関係もこれですよ。いわんやその辺のWebアプリケーションをや。我々が住んでるのは砂上の楼閣かも?