Reading Gauche/vm/insn/BNUMNE


Top / Reading Gauche / vm / insn / BNUMNE

BNUMNE

BNUMNE then

説明

条件分岐(Conditional branches)インストラクションの1つ。

BNUMNE では VAL0 レジスタにおかれた数値とスタック先頭にある数値が不一致のときにオペランド then を取り出しそれを PC レジスタに格納する。一致したときにはオペランド then を無視して PC レジスタをインクリメントし次の命令に進む。

BNUMNE は Branch if NUMber Not Equal の略。

shiro さんから頂いたフォローによれば

条件「不」成立時にジャンプする、ということにしておくと、if test then X else Y のコンパイル結果において、条件分岐直後に X が、その後に Y が来る、という順番が保たれるので読みやすいのです。

との事でした。

使用例

(disasm (lambda (x y) (if (= x y) #t #f)))

;; 0 LREF1-PUSH ; x

;; 1 LREF0 ; y

;; 2 BNUMNE 6 ; (= x y)

;; 4 CONST-RET #t

;; 6 CONST-RETF?

関連項目

関連インストラクション

コメント

コメントはありません。 コメント/Reading Gauche/vm/insn/BNUMNE?

お名前:

MENU

now: 3

リンク


最新の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: 1925, today: 1, yesterday: 1

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

Last-modified: 2009-05-23 (土) 11:52:39 (3677d);  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.034 sec.