えぐち です。 ---------- > 差出人 : WATANABE Hirofumi <watanabe / ase.ptg.sony.co.jp> > 宛先 : ruby mailing list <ruby-list / netlab.co.jp> > 件名 : [ruby-list:4849] Re: _muldi3 included in libgcc.a(Re: rbc.rb) > 送信日時 : 1997年10月8日 12:52 > > わたなべです. > > "EGUCHI Osamu" <eguchi / shizuokanet.or.jp> 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 とかやらないと駄目かも、、 えぐち