機械語
プロセッサが実際に読む数値の列であり、プログラミングと呼ばれるものはすべてこの上に積み重なった層にすぎない。
機械語は、特定のプロセッサ系列が直接実行できるよう、命令を二進数で符号化したものである。各命令は「何をするか」を示すオペコードと、「何に対して行うか」を示す0個以上のオペランドから成る。x86 では命令長が1〜15バイトと可変だが、ARM などの RISC では固定長で、デコードが単純かつ高速になる。
アセンブリ言語は数値を MOV のような記号に置き換えた直接の対応物で、コンパイラは高水準言語をここまで翻訳して下ろす。機械語がアーキテクチャ依存であることが、新しいプラットフォームごとに再コンパイルが要る理由のすべてであり、仮想マシンやバイトコードが発明された理由でもある。