[Anthy-dev 2535] Re: ScmObjInternalのCompacting

Back to archive index

YamaKen yamak****@bp*****
2005年 10月 14日 (金) 08:50:38 JST


At Fri, 14 Oct 2005 08:40:29 +0900,
mover****@hct***** wrote:
> On Friday 14 October 2005 07:51, YamaKen wrote:
> > ・NULL|tagによく使う定数をエンコード。大抵のアーキテクチャで
> >   immediate operandに収まる事を期待。CONSP等にNULLチェックが必要
> >   になるけどそこは妥協
> たぶん僕の弱いマシン寄りの話だと思うのですが、ここの意味がちと分からないの
> で、少し説明して貰えませんか?

32bit定数を扱う場合は大抵以下のような2命令使う流れになるんですが、

  1) レジスタに32bit定数をロードする(重めの操作)
  2) 1)でロードされたレジスタを使って比較・演算等を行う

前述のNULL|tag形式だと値が3bitに収まるので、以下のように1命令で
済む場合があります。

  1) 命令中に埋め込まれた狭bit幅の値を使って直接比較・演算等を行
     う

たぶん今太田さんが触ってるM32Rでも後者の操作はできると思うんで、
命令表を確認してみると違いが実感できると思います。

それからCONSPの方も一応説明しとくと、tagを確認した後に!NULLも確
認しないとconsだと確定できなくなるって事です。

-------------------------------
ヤマケン yamak****@bp*****



Anthy-dev メーリングリストの案内
Back to archive index