タグ

bytecodeに関するnabinnoのブックマーク (4)

  • What efficient pattern matching looks like at the bytecode level - DockYard

    The labels that are jumped to from the select_val match then are checking that the rest of the string matches. The select_val is being generated in label(28)’s block because there is a group of clauses for render_template generated in Phoenix.Template.__before_compile__ My theory is that this is how BEAM makes pattern matching efficient in general: it finds prefixes that can be matched against wit

    What efficient pattern matching looks like at the bytecode level - DockYard
  • バイトコード - Wikipedia

    バイトコード (bytecode) は、バイト指向の、中間表現のコードすなわち中間コードの総称である。バイトコードという名前は命令の構成がバイト指向であること、すなわち命令長がバイト可変長であったり、命令中のフィールドの区切りがビット単位でなくバイト単位になっているといったことから来ている。特にJavaの場合オペコードが1バイトである(Javaバイトコードの記事を参照)。しかし、仮想マシンの機械語をバイトコードと呼ぶことがJavaで広く一般的になったことから、前述のようなバイト指向でなくともバイトコードと呼んでいることも多い。バイト単位でなくビット単位の場合は、ビットコードとも呼ばれる。ワード指向のためにワードコードという語を使っている例も見られる。 存在意義[編集] バイトコードを用いる方式の利点は、ソースコードを直接解釈するインタプリタと同等の移植性を確保した上での、インタプリタのパフ

  • mrubyのバイトコードの命令の解説 - Qiita

    mrubyでコンパイラを作ってみたり、Rubyを書く以外の方法でmrubyのバイトコード列を書く場合、バイトコードの命令を知る必要があります。 バイトコード命令は単純そうで意外と奥が深いようです。ここではmrubyのJITを作成する経験で得たバイトコードの裏仕様を解説したいと思います。 OP_NOP 何もしない命令 これって実はcodegen.cで定義されている正規のコードジェネレータでは出てこないんですよね。でもバイトコードのパッチとかやりたいときはないと困る重要な命令です。 命令の仕様ではオペランドはないのですが、実際にはオペランドの領域があるのでなにか隠しデータを保存しておくのにも便利です。 OP_MOVE MOVE Rm, RnでレジスタRnの内容をRmに代入する命令。n, mはレジスタの番号 こんなにいらんだろ?って思うほどいっぱい生成されます。OP_SENDで解説しますが引数は

    mrubyのバイトコードの命令の解説 - Qiita
  • Javaバイトコード - Wikipedia

    Javaバイトコードは、Java仮想マシンが実行する命令形式である。各バイトコードのオペコードは長さが1バイトであるが、引数を持つものもあるため、結果として複数バイトの命令となる。256個のオペコードの全てが使われているのではなく、51個が将来のために予約されている。その他について、Javaプラットフォームの開発元であるサン・マイクロシステムズは、3つのコードを永久に実装しないままにした[1]。 Javaとの関係[編集] Javaプログラマは、Javaバイトコードについて知ったり理解する必要は全くない。しかしながら、IBMのdeveloperWorksによると、「バイトコードを理解することと、どんなバイトコードがJavaコンパイラにより生成される可能性が高いかを理解することは、アセンブリ言語の知識がCやC++プログラマの助けになるのと同じように、Javaプログラマの助けになる」とされている

    Javaバイトコード - Wikipedia
  • 1