From: EGUCHI Osamu Date: 1997-10-08T15:41:00+09:00 Subject: [ruby-list:4850] Re: _muldi3 included in libgcc.a(Re: rbc.rb) えぐち です。 ---------- > 差出人 : WATANABE Hirofumi > 宛先 : ruby mailing list > 件名 : [ruby-list:4849] Re: _muldi3 included in libgcc.a(Re: rbc.rb) > 送信日時 : 1997年10月8日 12:52 > > わたなべです. > > "EGUCHI Osamu" writes: > > :通常 _muldi3 は、 libgcc.a に含まれています。 > > なるほど. gcc -shared だと -lgcc とかがつかないんだ. > -lgcc を追加するのが簡単ですね. たぶんそれでもうまく行きます。。 ただ気になるのは、FreeBSD-2.2.2の gcc-2.7.2.1 では、 long long f(long long a, long long b) { return a * b; } 最適化なしでも _muldi3 を呼び出さず、インラインに展開してました。 どうも libjava は、古い(あるいは改造された) gcc でコンパイル されているのではないかと思います。 --- 別件ですが Java の long って gcc の long long でないですか? 手元に動く Java の処理系がないので、確認できないのですが。 もし long long と、jri:ext/java/java.c の INT2NUM() で jlong を 変換しているあたりでオーバーフローしますね。 sizeof (jlong) が幾つになるか、どなたかご存知ですか? #dec-alpha とか UltraSPARC のような64ビットなCPUの #事を考えると、perl みたいに INT32 とかやらないと駄目かも、、 えぐち