Taku Kudo
taku****@chase*****
2006年 4月 18日 (火) 03:14:25 JST
工藤です On 4/17/06, NOKUBI Takatsugu <knok****@daion*****> wrote: > 要望した本人の野首です。 > > At Sun, 16 Apr 2006 04:44:06 +0900, > Taku Kudo wrote: > > ちょっと考えたのですが、リトルエンディアンをデフォルトに > > するというのはどうでしょう? それなら、大部分を > > しめるインテル系を使う限りにおいては速度低下がありません。 > > それでもいいかなと思ったのですが、世の中には4byteで1234とあるものが > 3412とか2143となるCPUもあるので、それら全部を考慮したオーダー変換処理 > を用意してやらないといけないのが面倒そうです。 ややや glib-2.0 の gtype.h をみるとPDP_ENDIANというのがあったのですが このことでしょうか。 * glibconfig.h defines G_BYTE_ORDER which expands to one of * the below macros. */ #define G_LITTLE_ENDIAN 1234 #define G_BIG_ENDIAN 4321 #define G_PDP_ENDIAN 3412 /* unused, need specific PDP check */ PDP_ENDIAN についてglibはサポートしていないように思えます。 PDP ENDIAN のサポートは置いとくにして、エンディアンの変換は gtype.hがそのまま使えそうです。 > * ソフトウェア上は、ホストオーダーとネットワークオーダーをサポート > * デフォルトはホストオーダー > * オプション(もしくはデータの先頭になんらかのシグネチャを埋め込む)でネッ > トワークオーダーに切替えられる > > とするのがいいような気もするのですが、いかがでしょうか。 切り替えるとは、実行時に切り替えるのでしょうか? 実行時だと、パフォーマンスに少なからず影響が出そうな気がするので、 エンディアンの切り替えはコンパイル時にやりたいです。 たとえば、ホストオーダーとネットワークオーダーを configure で切り替えるとか... -- taku