diff Slide/slide.md @ 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.md	Fri Jan 11 10:41:24 2019 +0900
+++ b/Slide/slide.md	Fri Jan 11 10:49:55 2019 +0900
@@ -80,7 +80,31 @@
 
 ## MVM_interp_runで使用されているマクロ
 
-- マクロDISPATCHでは
+```
+DISPATCH(NEXT_OP) {
+    OP(const_i64):
+```
+
+- マクロ `DISPATCH` 及び `OP` は次の様に定義している
+
+```
+ #define OP(name) OP_ ## name
+ #define NEXT *LABELS[NEXT_OP]
+```
+
+- マクロ`DISPATCH`は, ラベルgotoが利用できる場合は無視される
+- マクロ `OP` が, 対応するバイトコード命令を, ラベル列に変換する
+
+
+```
+    OP_const_i16:
+    OP_const_i32:
+        MVM_exception_throw_adhoc(tc, "const_iX NYI");
+    OP_const_i64:
+
+```
+
+## MVM_interp_runのマクロ
 
 - MVM_interp_runではマクロを利用してMoarVMの環境などにアクセスしている
 -  頻出するマクロに `GET_REG` があり, 次のような使い方をする
@@ -120,7 +144,7 @@
 ```
 
 
-## MVM_interp_run
+## MVM_interp_runのラベルテーブル
 
 - ラベル遷移を利用する場合は配列`LABELS`にアクセスし, ラベル情報を取得する