バイト‐コード【byte code】
バイトコード
バイトコード
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/03/14 13:39 UTC 版)
バイトコード (bytecode) は、バイト指向の、中間表現のコードすなわち中間コードの総称である。バイトコードという名前は命令の構成がバイト指向であること、すなわち命令長がバイト可変長であったり、命令中のフィールドの区切りがビット単位でなくバイト単位になっているといったことから来ている。特にJavaの場合オペコードが1バイトである(Javaバイトコードの記事を参照)。しかし、仮想マシンの機械語をバイトコードと呼ぶことがJavaで広く一般的になったことから、前述のようなバイト指向でなくともバイトコードと呼んでいることも多い。バイト単位でなくビット単位の場合は、ビットコードとも呼ばれる。ワード指向のためにワードコードという語を使っている例も見られる。
- ^ 実機ではデコーダやエンコーダといった論理回路に向いたビットパターンのほうが好まれるといった細かい傾向の違いなどはある。
- 1 バイトコードとは
- 2 バイトコードの概要
- 3 存在意義
- 4 関連項目
バイトコード
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/20 10:04 UTC 版)
詳細は「バイトコード」を参照 ソースコードを実行可能な形にするには、まず、ソースコードを構文木に変換する必要がある。構文木のまま、インタプリタ型の処理系で実行する処理系もあるが、構文木をさらに、中間コード(バイトコードなど)などの中間表現に変換してから実行する物もある。中間コードをバイトコードと呼んでいる処理系ではそのインタプリタをバイトコードインタプリタと呼ぶ。Java や .NET Framework のように、中間コードの仕様を公開しファイルに書き出すものもあるし、仕様は公開せず処理系内部だけで使用するものもある。動的コンパイルを使っているインタプリタは、内部で実機の機械語に変換し実行する。 インタプリタとコンパイラの間には様々な中間的実装が存在し、それぞれにプログラム実行前に行われる解析の度合いが異なる。例えば Emacs Lisp はバイトコードにコンパイルされ、LISP のソースを高度に圧縮し最適化した表現にしているが、それは機械語コードではない(したがって特定のプラットフォームに依存しない)。この「コンパイル」されたコードを解釈するのがバイトコードインタプリタである(それ自体は C で書かれている)。この場合のコンパイルされたコードは仮想機械の機械語コードであり、仮想機械はハードウェアで実装されておらず、バイトコードインタプリタとして実装されている。同様の手法は Open Firmware システムで使われている Forth コードでも使われている。ソース言語は「Fコード」(バイトコードの一種)にコンパイルされ、それを仮想機械が解釈実行する。他にPコードマシンなどがある。 コントロール・テーブル(英語版)はコンパイラを通さなくとも生成でき、バイトコードインタプリタと同様の方法でカスタマイズされたインタプリタでの適切なアルゴリズム的制御構造を記述できる。
※この「バイトコード」の解説は、「インタプリタ」の解説の一部です。
「バイトコード」を含む「インタプリタ」の記事については、「インタプリタ」の概要を参照ください。
バイトコード
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/27 00:06 UTC 版)
「Emacs Lisp」の記事における「バイトコード」の解説
Emacs Lispコードの性能は、「バイト・コンパイル」で向上させることができる。Emacs Lispのソース・ファイルをバイトコードという特殊表現に変換するコンパイラがEmacsにはある。Emacs Lispのバイトコード・ファイルの拡張子は、「.elc」である。ソース・ファイルにくらべると、バイトコードは速く読み込めて、ディスク空間を少ししかとらず、読込み時のメモリーが少なく、速くうごく。 バイトコードは、プリミティブよりは遅い。しかし、バイトコードで読み込まれた関数は、簡単に修正したり、再読込みしたりできる。さらに、バイトコード・ファイルは、プラットフォームに依存しない。Emacsについてくる標準的なEmacs Lispコードは、バイトコードで読み込まれるが、利用者の参照用として、対応するソース・ファイルも大抵付いている。利用者の拡張はそれほど大きくもなく、また計算機の負担も小さいので、普通はバイト・コンパイルされない。
※この「バイトコード」の解説は、「Emacs Lisp」の解説の一部です。
「バイトコード」を含む「Emacs Lisp」の記事については、「Emacs Lisp」の概要を参照ください。
- バイト‐コードのページへのリンク