From: EGUCHI Osamu Date: 1997-10-10T08:00:06+09:00 Subject: [ruby-dev:717] Re: _muldi3 included in libgcc.a$B!J(JRe: rbc.rb$B!K(J えぐち です。 ---------- > 差出人 : Yukihiro Matsumoto > 件名 : [ruby-dev:712] Re: _muldi3 included in libgcc.a(Re: rbc.rb) > > まつもと ゆきひろです > > ruby-devにしましょう. そうですね。 > In message "[ruby-list:4853] Re: _muldi3 included in libgcc.a(Re: rbc.rb)" > on 97/10/08, "EGUCHI Osamu" writes: > > |えぐち です > > |gcc 以外の処理系でも64bit-intに対応させる必要があるか > |悩むところですが(あるでしょうね)、、 > > 64bitアーキテクチャへの対応はまだまだなので,その辺はちゃん > と考えないといけませんね.alpha移植のためにいろいろと考えた > のですが,まだ結論は出ていません. > > 気を使ったつもりでもintとlongとvoid*が同じサイズである事を仮 > 定したコードがたくさん残ってましたから,この辺からなんとかし > ていかないといけませんねえ. 明示に形変換を行うマクロを ruby.h で定義することになるんでしょうか? > |#それとなく見てみると、bignum.c:uint2big() は、 > |#大きな大きな整数を考慮したコーディングだったりする。 > |#考えられてますね>まつもと さん。 > > 一応,bignum.cは整数のサイズには依存しないように気を付けてい > ます(というか,もとのscmのコードが気を付けているのを継承して > いるだけだったりする). > > 64bitマシンではsizeof(VALUE)=8ですから,USHORT=unsigned int > でも動作しそうなんですが,そこまでたどりつけていません. まず、 ruby -e 'p 0.size' で 4 を返すのが仕様なのか、実装依存かを決めておく必要がありそうです。 marshal なデータファイルの互換性からすると 0.size == 4 を仕様にした方がいいように思えます。 (64ビット機でのパフォマス低下が問題かも、、) 0,size == 8 を仕様にしてしまう という選択がありますが、 ll_add() とか書きまくらないとだめなので かなりの思いっきりが必要でしょう。 # この為だけ、C++ で ruby を書き直すと言う選択は(当然)却下ですね (^^) えぐち