タグ

compilerに関するnobyukiのブックマーク (4)

  • スレッデッドコード - Wikipedia

    スレッデッドコード(英: threaded code)は、プログラミング言語処理系におけるコード生成手法のひとつで、呼出すべきサブルーチンのアドレスを羅列する、というものである。「内部インタプリタ」と呼ばれる極小のインタプリタで順次呼出したり、サブルーチン・スレッディング方式と言われるコンパイル手法の場合は機械語のサブルーチンコール命令の羅列になっているので、先頭にジャンプ(ないし呼出し)してそのまま実行する。 スレッデッドコードは、他のコード生成技法や他の呼出規約よりもコード密度が高いが、若干実行速度が遅くなる(通常、1命令多くなる)[要出典]。しかし、プログラムが小さくなるのでCPUのキャッシュに完全に収まる可能性が高くなり、キャッシュミスが起きにくくなって性能が向上する可能性が高い[1]。 スレッデッドコードは、Forth、多くのBASICの実装[要出典]、一部のCOBOLの実装[要

  • Threaded Code

    スレッデッドコード (Threaded Code) スレッデッドコードは何のため? 仮想機械インタプリタ(解釈実行処理系)を作成するのにスレッデッドコードが用いられる. インタプリタの実装には何種類かの方法があり、よく使われるのは次のとおり: 文字列を直接に解釈実行する。 木構造にコンパイルしてから、それを解釈実行する。(その典型は抽象構文木)。 仮想機械にコンパイルしてから、その仮想機械コードを解釈実行する。 性能に関心がある場合は仮想機械を用いるアプローチが適している(というのは、命令のフェッチと復号が単純に行え、より高速だから)。性能に関心が無い場合でも、仮想機械を用いるアプローチは十分検討に値する(他のアプローチと同程度に単純化できる場合が多いから)。 スレッデッドコードは、もともと、仮想機械インタプリタを実装するための技術の一つだった [bell73]。今日、少なくともForth

  • Threaded Code - moiの頭の中

    Threaded Code(翻訳) Threaded Code(翻訳) スレッデッドコードは何に効果的か? スレッデッドコードとは何か? スレッディング技法 間接スレッデッドコード Forthと直接スレッディング トークンスレッデッドコード その他の用語 どのようにスレッデッドコードを移植可能に実装するか? 値としてのGNU Cのラベル 継続渡しスタイル スイッチスレッディング コールスレッディング 歴史 参考文献 原文 : http://www.complang.tuwien.ac.at/forth/threaded-code.htmlを翻訳したサイトがあったのだが、いつの間にかなくなった。仕方ないので、自家翻訳する。 追記:(ほとんど訳した後に、Internet archiveがあることに気がついた。私が以前見た訳文は、Threaded Code。翻訳の質はこちらの方が上) スレッデッ

  • 青木峰郎『ふつうのコンパイラをつくろう』の目次がやばいのでサイン会@RubyKaigiのお知らせ - 思っているよりもずっとずっと人生は短い。

    (7/22追記:ふつパイラのサポートページができていました。下記よりもサポートページの方が確実かと思うので、そちらをどうぞ。) 青木峰郎先生が3年の歳月を費やしてついに完成させた労作『ふつうのコンパイラをつくろう』、RubyKaigi2009で先行発売されているのはみなさんご存知というか、もちろん来場されたみなさんはすでに購入済みかと思うのですが、買いそびれてしまった方のために、とある信頼できる情報筋から目次のデータをゲットいたしました。以下に転載いたします。 中身についてはあえて多くは語りませんが、構文解析からアセンブラ生成と最適化を終えて、その後に「第4部 リンクとロード」があるのが注目だそうです。ELFの話から位置独立コードの話まで、「そこまでやるか」もきっちりフォローするのが青木先生の「ふつう」の「ふつう」たるところと言えましょう。読んでないけど。 そして明日は12:00からRub

    青木峰郎『ふつうのコンパイラをつくろう』の目次がやばいのでサイン会@RubyKaigiのお知らせ - 思っているよりもずっとずっと人生は短い。
  • 1