comparison 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
comparison
equal deleted inserted replaced
93:c3b973a23fee 94:4f0eaa330295
216 216
217 <div class='slide'> 217 <div class='slide'>
218 <!-- _S9SLIDE_ --> 218 <!-- _S9SLIDE_ -->
219 <h2 id="mvm_interp_runで使用されているマクロ">MVM_interp_runで使用されているマクロ</h2> 219 <h2 id="mvm_interp_runで使用されているマクロ">MVM_interp_runで使用されているマクロ</h2>
220 220
221 <ul> 221 <pre><code>DISPATCH(NEXT_OP) {
222 <li> 222 OP(const_i64):
223 マクロDISPATCHでは 223 </code></pre>
224 </li> 224
225 <ul>
226 <li>マクロ <code>DISPATCH</code> 及び <code>OP</code> は次の様に定義している</li>
227 </ul>
228
229 <pre><code> #define OP(name) OP_ ## name
230 #define NEXT *LABELS[NEXT_OP]
231 </code></pre>
232
233 <ul>
234 <li>マクロ<code>DISPATCH</code>は, ラベルgotoが利用できる場合は無視される</li>
235 <li>マクロ <code>OP</code> が, 対応するバイトコード命令を, ラベル列に変換する</li>
236 </ul>
237
238 <pre><code> OP_const_i16:
239 OP_const_i32:
240 MVM_exception_throw_adhoc(tc, "const_iX NYI");
241 OP_const_i64:
242
243 </code></pre>
244
245
246
247 </div>
248
249 <div class='slide'>
250 <!-- _S9SLIDE_ -->
251 <h2 id="mvm_interp_runのマクロ">MVM_interp_runのマクロ</h2>
252
253 <ul>
225 <li>MVM_interp_runではマクロを利用してMoarVMの環境などにアクセスしている</li> 254 <li>MVM_interp_runではマクロを利用してMoarVMの環境などにアクセスしている</li>
226 <li>頻出するマクロに <code>GET_REG</code> があり, 次のような使い方をする</li> 255 <li>頻出するマクロに <code>GET_REG</code> があり, 次のような使い方をする</li>
227 </ul> 256 </ul>
228 257
229 <pre><code> OP(const_i64): 258 <pre><code> OP(const_i64):
273 302
274 </div> 303 </div>
275 304
276 <div class='slide'> 305 <div class='slide'>
277 <!-- _S9SLIDE_ --> 306 <!-- _S9SLIDE_ -->
278 <h2 id="mvm_interp_run">MVM_interp_run</h2> 307 <h2 id="mvm_interp_runのラベルテーブル">MVM_interp_runのラベルテーブル</h2>
279 308
280 <ul> 309 <ul>
281 <li>ラベル遷移を利用する場合は配列<code>LABELS</code>にアクセスし, ラベル情報を取得する</li> 310 <li>ラベル遷移を利用する場合は配列<code>LABELS</code>にアクセスし, ラベル情報を取得する</li>
282 </ul> 311 </ul>
283 312
302 331
303 </div> 332 </div>
304 333
305 <div class='slide'> 334 <div class='slide'>
306 <!-- _S9SLIDE_ --> 335 <!-- _S9SLIDE_ -->
307 <h2 id="mvm_interp_run-1">MVM_interp_run</h2> 336 <h2 id="mvm_interp_run">MVM_interp_run</h2>
308 337
309 <ul> 338 <ul>
310 <li>Cの実装の場合, switch文に展開される可能性がある為, 命令ディスパッチが書かれているCソース・ファイルの指定の場所にのみ処理を記述せざるを得ない 339 <li>Cの実装の場合, switch文に展開される可能性がある為, 命令ディスパッチが書かれているCソース・ファイルの指定の場所にのみ処理を記述せざるを得ない
311 <ul> 340 <ul>
312 <li>その為, 1ファイルあたりの記述量が膨大になり, 命令のモジュール化ができない</li> 341 <li>その為, 1ファイルあたりの記述量が膨大になり, 命令のモジュール化ができない</li>