Reading Gauche/vm/insn/CONSTI


Top / Reading Gauche / vm / insn / CONSTI

CONSTI

CONSTI num

説明

定数整数 num を VAL0 レジスタにセットする。
定数整数に使えるのは 2^20(-524287〜524287)の範囲である。
これを超える定数整数はCONSTを利用してコンパイルされる。
命令に12bit、値に20bit あわせて32bit で1命令なので命令長が短くなるメリットがある。

使用例

CONSTI 12345

関連項目

コメント

最新の1000件を表示しています。 コメントページを参照

お名前:
  • 結局なぜ20bitなのかはもう少し他の部分を読み進めるか shiro さんに突撃するしかなさそうですね。一旦保留にして先に進むのもありだと思います。 -- ひげぽん 2008-03-06 (木) 12:26:53
    • では20bit問題は保留にして次に行きましょう。 -- naoya_t 2008-03-06 (木) 14:15:14
  • -524287〜524286であれば20bitですが、-524287〜524287の範囲だと21bitは必要になりますよ。それでも3bitの行方が問題になりますが。 -- ココサブ 2008-03-06 (木) 02:25:38
    • 先頭の - が変に解釈されてしまった -- ココサブ 2008-03-06 (木) 02:26:33
      • 直しておきました! -- naoya_t 2008-03-06 (木) 03:17:55
    • 20ビットなら -524288〜524287 まで行けます。が、実際の範囲はひげぽんさんの書いた通り-524287〜524287で、これは#x-7ffff〜#x7ffffに該当します。4bitの行方が気になります。 -- naoya_t 2008-03-06 (木) 03:16:20
      • 勘違いしてました。20ビットで表せますね。 -- ココサブ 2008-03-06 (木) 12:23:46
  • 命令に8bit、オペランドに残りの24bitですよね。なぜ20bitしか使われていないのかと思って compile.scm を見てみたところ、整数値が INSN_ARG に収まるかどうかを判定する関数 integer-fits-insn-arg? で (<= #x-7ffff obj #x7ffff) と限定しているのを発見しました。なぜ20bitで切っているのかは今のところわかりません。 -- naoya_t 2008-03-06 (木) 01:33:34
    • おお。すばらしい。 -- ひげぽん 2008-03-06 (木) 12:25:40

MENU

now: 5

リンク


最新の20件
2018-10-07 2018-09-20 2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 2986, today: 1, yesterday: 1

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:58 (3914d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.044 sec.