From: matz@... (Yukihiro Matsumoto) Date: 1997-10-10T20:43:16+09:00 Subject: [ruby-dev:722] Re: 64bit int support (Re: _muldi3 included in libgcc.a) まつもと ゆきひろです In message "[ruby-dev:719] 64bit int support (Re: _muldi3 included in libgcc.a)" on 97/10/10, "EGUCHI Osamu" writes: | |えぐち です。 |いまさら sizeof(int) == 2 の処理系をサポートしないでしょうが、 |sizeof(long) == 8 に対応するなら(困難でなければ)16 でも 32 |でもコンパイル可能なようにしたいですね。 そうですね. |ところで、alpha-linuxでは |sizeof({long,void*,int,short})は、それぞれいくつになりますか? short 2 int 4 long 8 void* 8 です. |問題が | sizeof(long) != sizeof(void*) |なのか | sizeof(long) != sizeof(int) |なのかが理解できていないのです(面目ない)。 sizeof(int) != sizeof(void*)が問題なんですね. まずプロトタイプ宣言をしていない関数の戻り値はintなのですが, rubyではけっこうsizeof(int)==sizeof(VALUE)を仮定して,VALUE を返す関数を宣言無しで使っていますのでで,全部の関数にプロト タイプを付ける必要があります. またsetjmp()でポインタを返していた部分がありましたが,これは 修正しました. 後はFIX2INT(),INT2FIX()の扱いですね. |あと、Bignum の DIGIT の大きさを2バイトと仮定するのは |今後問題にならないですか?(仕様ですか?) |今の marshal はそれを仮定しているようですが如何でしょう? 現状のmarshalがそれを仮定しているのは確かですね.どうしましょ うか? Flexibleなのが望ましいとは思うのですが…. |少なくとも、私はそう感じます、、でも仕事では使わざるをえない |という悲しい現実が、、 転職して以来 C++ からは開放されました. まつもと ゆきひろ /:|)