Mercurial > hg > Papers > 2019 > anatofuz-prosym
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`にアクセスし, ラベル情報を取得する