ネイティブコード 【native code】
概要
ネイティブコード(native code)とは、コンピュータのCPU(MPU/マイクロプロセッサ)が理解できる形式で記述されたコンピュータプログラム。プロセッサに対する命令の仕様を定義した機械語(マシン語)で書かれており、人間が直接読み書きすることは困難である。コンピュータではすべてのデータを2進法の0と1の組み合わせであるビット列で表すが、マイクロプロセッサはプログラムコードとしてどのようなビット列を与えるとどのように動作するかが設計・仕様で決まっており、その命令の体系を機械語という。
プロセッサを意図したとおりに動作させるには、機械語の命令列で構成されるコンピュータプログラムを作成し、これを端から順に読み込ませて実行させる。このプロセッサに直に与えて解釈・実行させられる形式のプログラムをネイティブコードという。
機械語を構成する各命令語は「10001000」といったビット列で定義され、仕様書などでは16進数の数値に置き換えて記されるが、これ自体は通し番号のようなもので人間にとっての意味や規則性などは存在しないため、これを丸暗記してネイティブコードそのものを読み書きするのは簡単にできることではない。
このため、通常は人間にとって理解しやすい命令語などを用いて定義されたプログラミング言語を用いてソースコード(source code)を記述し、これをコンパイラやアセンブラ、インタプリタなどのソフトウェアによる自動処理でネイティブコードへ変換する。
仮想マシン向けコード
ネイティブコードのことをオブジェクトコード(object code)あるいはバイナリコード(binary code)と呼ぶことがあるが、これらはネイティブコードの他に仮想マシン向けの実行可能コードであるバイトコード(byte code)を指すことがある。
仮想マシンは物理的なコンピュータの上にソフトウェアとして実装された仮想的なコンピュータで、独立した固有の仮想的なプロセッサと機械語の体系を持つ。
仮想マシンで動作するソフトウェアはソースコードから仮想プロセッサ向けのバイトコードのプログラムに変換されて配布される。これを実行時に仮想マシンが解釈して物理プロセッサ向けのネイティブコードに変換して実行する。
このような段階を踏むことで、プロセッサの仕様の違いに依らず様々な機種のコンピュータ上で同一のプログラムを実行することができるようになる。この仕組みを用いる環境としてJava仮想マシン(JVM)や.NET Frameworkなどが有名である。