タグ

2012年7月31日のブックマーク (4件)

  • x86とGCCと分岐と私 - mirichiの日記

    mrubyのVMはoptableに命令と実際のアドレスの変換テーブルをおいて、gotoのときにそれを使って変換→ジャンプをしているのでダイレクトスレッデッドじゃなくてトークンスレッデッドじゃないのかと思う今日この頃。識者の意見求む。 今回はCPUのアーキテクチャに深く依存する分岐予測の話。長いしわかりにくい。他人への説明用ではなく自分用の整理と考えられたし。 1.分岐とは アセンブラでいうJMP系、CALL系、RETを言う。プログラムカウンタを変更して任意の位置に実行位置を移動する。Cだと制御系の文(if、while、for、gotoなど)や関数呼び出しがそれらの命令に変換される。CPUのレベルでは条件無しのJMPも分岐と表現する。 CPUアーキテクチャ側から見ると分岐命令は大きくわけて4つ。 ・無条件分岐 ・条件分岐 ・間接分岐 ・リターン である。 2.分岐予測とは CPUはIntel

    x86とGCCと分岐と私 - mirichiの日記
  • ちょっとひと言 - 物言わぬ多数派: Visual Basic 6 が今でも成功している理由

    物言わぬ多数派: Visual Basic 6 が今でも成功している理由 David Platt マイクロソフトは最近、Windows 8 の有効期間は Visual Basic 6 アプリケーションが「動作する」よう、互換性を確保する期間を延長することを発表しました (詳しくは今月の編集長のコラム、「老兵は死なず」をお読みください)。最初に Visual Basic 6 がリリースされたのは 1998 年なので、Visual Basic 6 アプリケーションは少なくとも 24 年にわたってサポートされることになります。Windows 7 (2009 年) と互換性がない Microsoft .NET Framework 1.0 (2002 年) とは対照的です。 Eric という私の生徒が、Visual Basic 6 を、Windows エコシステムに巣くう「なかなか退治できないゴキブ

    ちょっとひと言 - 物言わぬ多数派: Visual Basic 6 が今でも成功している理由
    nfunato
    nfunato 2012/07/31
  • mrubyのOP_SENDとブロック引数 - mirichiの日記

    いまのところ興味はVMのパフォーマンスのみ。昨日ためしたことを忘れないうちに残しておく。まずちょっと気になったFloatオブジェクトのサイズから。 mrubyはmrbconf.hを変更することで設定を変えてコンパイルすることができる。正規表現や標準入出力などを使うかどうか、といった話だが、ここにFloatオブジェクトのサイズというか精度を指定するのも存在する。 #ifdef MRB_USE_FLOAT typedef float mrb_float; #else typedef double mrb_float; #endifデフォルトはCRubyと同じようにdoubleを使う。 VMの処理はそのほとんどがオブジェクト(mrubyのmrb_value、CRubyでいうVALUE型みたいなもの)のコピーとメソッド呼び出しなのではないかと言う気がしている。 mrb_valueの型はこうなってい

    mrubyのOP_SENDとブロック引数 - mirichiの日記
    nfunato
    nfunato 2012/07/31
  • LLVM解説本をC82で出します - Boost Your Programming!

    LLVMの解説をC82の2日目(8/11)西し39aで出します。 タイトルは「3日で出来るLLVM」です. LLVMを使ってコンパイラを作るという内容になっています。 フロントエンドとミドルエンドはid:motipizza(@sui_moti)が担当し、自分はバックエンドの担当です。 表紙は矢上さん(blog)に書いていただきました。かわいい表紙でよくできているのでこれだけでも売れそうです。 目次は以下のようになっています。 はしがき 第一章:はじめに 第二章:コンパイラとLLVM 第三章:環境構築 第四章:LLVM IR 第五章:フロントエンドを作る 第六章:Pass について 第七章:バックエンドを作る あとがき LLVM解説を作ると決まってからLLVMについていろいろと調べ始めましたが、 ほとんど資料が無く特にバックエンドに関しては皆無のような状態で苦労しました。 自分が理解でき

    LLVM解説本をC82で出します - Boost Your Programming!
    nfunato
    nfunato 2012/07/31