エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
2006-11-10
第3回です。今日はいよいよコンパイル処理の本陣に切り込みます。 コンパイルの大元締め関数はただひと... 第3回です。今日はいよいよコンパイル処理の本陣に切り込みます。 コンパイルの大元締め関数はただひとつ、iseq_compile_each @ compile.c です。 static int iseq_compile_each(yarv_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) { ... type = nd_type(node); switch (type) { case NODE_METHOD:{ ... case NODE_FBODY:{ ... } ... } 基本的にこの関数は、1個の巨大なswitch文です。構文木のノードの種類によって分岐しています。引数などは次の通り。 iseq : 命令列を表すRubyオブジェクト。ここにはメタ情報を入れたり出したり。 ret : コンパイル結果の命令列を入れておくリスト