namazu-ml(avocado)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: byte order and bit length problem



"Gorochan ^o^ Kunito" <kunito@xxxxxxxxxxxxxxxxxxx> wrote:

(略)
>のようなプログラムをMakefile 中で
>	$(CC) -o checkint checkint.c
>	./checkint > namazuint.h
>	rm checkint
>のようにして、namazu.c の中で namazuint.h を読み込むというの
>はどうですか? そうすればnamazu.c の中では常に namazuint 
>(もっとかっこいい型のほうがいいかもしれませんが^^;)を使え
>ばいいので、#ifdefとか使わなくてすむから楽だと思います。つい
>でにバイトオーダーもnamazu.cのコンパイル前に判別することもで
>きそうではありませんか?

うーんなるほど。同じことは Perl では sizeof の代わりに 
length(pack('i', 1)) のように調べられますね。バイトオーダーは

if (ord(pack('i', 1)) == 1) {
    print "little-endian\n";
} else {
    print "big-endian\n";
}

かな。

こんな感じにビット長とバイトオーダーを調べて、 make する時に反映
させれば良さそうですね。

あるマシンで作ったインデックスを別のマシンで用いること考えると、イ
ンデックスのビット長とバイトオーダーは共通にした方が良いような気が
してきました。インデックスをマージするツールを作ることも考えている
のですが、ここでも問題になりますしね。

統一するとすれば絶対数の多い Intel の CPU に合わせて 32bit かつ 
little-endian にするのがいいんじゃないかと思います。 big-endian の
マシンにはちょっと申し訳ないけど、どうせ endian の変換にかかるコス
トなんて微々たるものですから、問題にはならないと思います。

…というように考えているのですが、いかがなものでしょう。これはちょっ
と大きな変更になるので、もう少し先の v1.1.2 で実施しようと思います。
このヴァージョンから複数のインデックスへ検索が可能になることですし、
インデックスの形式の共通化も図った方が良いと考えられます。

昔に作った big-endian のインデックスも使えるようにコンヴァータを用
意するといった配慮も欲しいかもしれませんね。

何か意見があればお願いします。

# そういえば MHonArc 2.1.2 がでていますね。
# <URL:http://www.oac.uci.edu/indiv/ehood/mhonarc.html>

--
高林 哲 Satoru Takabayashi