Mercurial > hg > Papers > 2019 > anatofuz-prosym
diff Slide/slide.html @ 94:4f0eaa330295
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 11 Jan 2019 10:49:55 +0900 |
parents | c3b973a23fee |
children | 01f148c3de98 |
line wrap: on
line diff
--- a/Slide/slide.html Fri Jan 11 10:41:24 2019 +0900 +++ b/Slide/slide.html Fri Jan 11 10:49:55 2019 +0900 @@ -218,10 +218,39 @@ <!-- _S9SLIDE_ --> <h2 id="mvm_interp_runで使用されているマクロ">MVM_interp_runで使用されているマクロ</h2> +<pre><code>DISPATCH(NEXT_OP) { + OP(const_i64): +</code></pre> + <ul> - <li> - マクロDISPATCHでは - </li> + <li>マクロ <code>DISPATCH</code> 及び <code>OP</code> は次の様に定義している</li> +</ul> + +<pre><code> #define OP(name) OP_ ## name + #define NEXT *LABELS[NEXT_OP] +</code></pre> + +<ul> + <li>マクロ<code>DISPATCH</code>は, ラベルgotoが利用できる場合は無視される</li> + <li>マクロ <code>OP</code> が, 対応するバイトコード命令を, ラベル列に変換する</li> +</ul> + +<pre><code> OP_const_i16: + OP_const_i32: + MVM_exception_throw_adhoc(tc, "const_iX NYI"); + OP_const_i64: + +</code></pre> + + + +</div> + +<div class='slide'> + <!-- _S9SLIDE_ --> +<h2 id="mvm_interp_runのマクロ">MVM_interp_runのマクロ</h2> + +<ul> <li>MVM_interp_runではマクロを利用してMoarVMの環境などにアクセスしている</li> <li>頻出するマクロに <code>GET_REG</code> があり, 次のような使い方をする</li> </ul> @@ -275,7 +304,7 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="mvm_interp_run">MVM_interp_run</h2> +<h2 id="mvm_interp_runのラベルテーブル">MVM_interp_runのラベルテーブル</h2> <ul> <li>ラベル遷移を利用する場合は配列<code>LABELS</code>にアクセスし, ラベル情報を取得する</li> @@ -304,7 +333,7 @@ <div class='slide'> <!-- _S9SLIDE_ --> -<h2 id="mvm_interp_run-1">MVM_interp_run</h2> +<h2 id="mvm_interp_run">MVM_interp_run</h2> <ul> <li>Cの実装の場合, switch文に展開される可能性がある為, 命令ディスパッチが書かれているCソース・ファイルの指定の場所にのみ処理を記述せざるを得ない