yarv-dev:446
From: SASADA Koichi <ko1 atdot.net>
Date: Sun, 6 Mar 2005 17:06:17 +0900
Subject: [yarv-dev:446] Re: [ANN] YARV - Yet Another RubyVM 0.2.0
ささだです。 >> うーん、3.4 系は試していないのだけれど、なんか思い通りのア >>センブル結果になっていないような・・・。なんでだろ。私も 3.4 >>系で試してみないと駄目かな。 > > > -mcpu=ev6 あたりが変なことをしてるのやもしれません。 > 今度起動したときにでもいくつかフラグを試しときます。 > > # ちなみに以前「Alpha だと gcc は遅くて」とか言いましたが、 > # その後の調べによると、少なくとも Ruby に関しては > # ccc (COMPAQ cc) と gcc 3.4 は速度差がないことがわかってます。 なるほど。 >> ちなみに、ia32 系(と x86-64系)では、program counter をレ >>ジスタに割り付けています。その辺が結構効いているのではないかと >>思います> alpha であんまり速くなってない >> >> 他の VM の仮想レジスタ類も、マシンレジスタに割り付けてしまえば >>きっともっと速くなると思います。でも、gcc のバグか何か知らないけ >>ど、上書きしちゃいけないレジスタに上書きするようなコード吐いてく >>れるので、安全側に倒して、現状では PC 一個だけを対象にしています。 >>(x86-64 で、もうちょっとレジスタに置いてみたんだけどあんまり速 >>くならんかったという経緯もあるんですが) >> >> alpha って何個レジスタ持ってるんですか? > > > 物理的には 32 個ですが、当然ながら calling convention で > いくらか制限がかかります。"Alpha Architecture Reference Manual" > II-B DIGITAL UNIX Software によると、 > > * アキュミュレータ 1 > * 関数呼び出しで無効 12 > * 関数呼び出しをまたいで有効 6 > > となってます (もちろん fp とか sp は別にある)。 > Linux とか NetBSD のような他の UNIX 系 OS も > digital UNIX 互換なので同様です。 ふと本棚を見たら置いてあったのでみてみました。しかし、全部の 目次が先頭に無いって言うのはわかりづらい本だ...。 気になったので引用します。アキュミュレータとはなんでしょう か。v1 のこと? 知らない単語だったもので。 r1 (v1) 式の評価や整数関数の返り値 r1...r8 (t0...t7) caller save registers r9...r14 (s0...s5) callee save registers r15 (FP or s6) フレームポインタ or callee save reg r16...r21 (a0...a5) 引数レジスタ(caller save regs) r22...r25 (t8...t11) caller save register r26 (ra) リターンアドレス or 式の評価 r27 (pv or t12) Procedure value (?) or caller save reg r28 (at) assembler temporary (caller save reg) r29 (gp) Global Pointer r30 (sp) Stack Pointer r31 (zero) zero register zero レジスタは r0 が綺麗(MIPS)だと思うんだけどなあ。他は 殆ど同じですね。でも、OS 予約のレジスタが無いけれど、どうする んだろう。特権命令用に別のレジスタで計算できたりするのかな。 -- // SASADA Koichi at atdot dot net // -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
432 2005-03-04 16:02 [ko1 atdot.net ] [ANN] YARV - Yet Another RubyVM 0.2.0 433 2005-03-04 18:15 ┗[aamine loveruby.net ] 434 2005-03-04 19:16 ┗[ko1 atdot.net ] 435 2005-03-04 20:44 ┗[aamine loveruby.net ] 437 2005-03-05 20:03 ┗[ko1 atdot.net ] 443 2005-03-06 12:52 ┗[aamine loveruby.net ] -> 446 2005-03-06 17:06 ┣[ko1 atdot.net ] 449 2005-03-06 19:22 ┃┗[ko1 atdot.net ] 450 2005-03-06 19:51 ┗[shiro lava.net ] 451 2005-03-06 20:13 ┗[ko1 atdot.net ] GC on stack (was: Re: [ANN] YARV - Yet Another RubyVM 0.2.0)