Reading Gauche/vm/insn/LREF


Top / Reading Gauche / vm / insn / LREF

LREF

LREF dep off

説明

環境フレームの第 dep 層(0なら一番手前)の最後から off 番目(0なら一番最後)値を VAL0 レジスタにセットする。
有効なデータを指さないdep/offを指定した場合、即ち第dep層が存在しない場合、あるいはフレームに格納されている値の数がoff+1に満たない場合には、VMをダンプして強制終了する。

使用例

(disasm (lambda (a b c d e f g) (lambda (x y z) a)))

main_code:

;; 0 CLOSURE #<lambda 0> ; (lambda (x y z) a)

;; 2 RET

internal_closure_0:

;; 0 LREF (1,6) ; a

;; 1 RET

備考

(dep,off) = (0,0) (0,1) (0,2) (0,3) (1,0) (1,1) (1,2) (2,0) (2,1) (3,0) の場合、それぞれ1命令 LREF0 , LREF1 , LREF2 , LREF3 , LREF10 , LREF11 , LREF12 , LREF20 , LREF21 , LREF30 にコンパイルされる。
但し (0,4) (1,3) (1,4) では LREF4 , LREF13 , LREF14 が用いられず、LREF dep off の形にコンパイルされる。

関連項目

関連インストラクション

参照元

コメント

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

お名前:
  • 読みました。問題ないと思います。ちなみにLREFはLocation Referenceの略称だと思うんですが、みなさんはどう解釈してますか? -- ココサブ 2008-04-13 (日) 13:34:10
    • GREFがグローバルなので、LREFはローカルじゃないかと思います。-- naoya_t 2008-04-13 (日) 15:44:25
    • ああ、確かにそうですね。Local Referenceだと考えを改めました。 -- ココサブ 2008-04-13 (日) 16:05:21
  • 使用例が抜けているようです。細かくてすみません。 -- ひげぽん 2008-04-01 (火) 17:40:00
    • 使用例を書くべくdisasmしていたら、LREF4, LREF13, LREF14 などの obsoletedなインストラクションが使われないことが確認できました。 -- naoya_t 2008-04-01 (火) 21:59:46
    • というわけでLREFシリーズ全インストラクション(※obsoletedは除く)に使用例を追加しました。 -- naoya_t 2008-04-01 (火) 22:42:42
    • お疲れさまです。ありがとうございます。 -- ひげぽん 2008-04-01 (火) 22:52:51

MENU

now: 2

リンク


最新の20件
2019-02-26 2018-10-07 2018-09-20 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: 3813, today: 1, yesterday: 2

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

Last-modified: 2008-04-13 (日) 16:05:21 (4022d);  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.150 sec.