基本的に、あるアーキテクチャの中央処理装置のための機械語は、別のアーキテクチャの中央処理装置のためには全く使えない。
たとえば、Pentium系列とPowerPC系列の双方で動く機械語プログラムが存在しないのは、命令セットに互換性が無いからである。
たとえ同じメーカー（や同系列企業）の中央処理装置でも、ある世代の中央処理装置のための機械語が、そのアーキテクチャの「世代」が代替わりし、アーキテクチャが変化すると、全く動かない。機械語プログラムがそのまま動くか否か、という互換性を「バイナリ互換性」と言う。
CPUによる仕様の差異.
CPUの仕様が異なれば、機械語もそれぞれのCPUごとに異なる。上記類似点の範囲でのCPUごとの機械語の仕様の差異には、以下のようなものが挙げられる。
パターン.
機械語で書かれたコードには頻出するパターンが存在する。
関数.
機械語に関数構文は存在しないが、関数に相当するパターンが存在する。
関数は引数を受け取り、ローカル変数を確保し、ボディの命令を実行し、戻り値を返すルーチンである。このルーチンを呼び出す場合、制御が戻るポイントを控え、引数を用意し、ルーチンへ制御を移して実行し、戻り値を記録し、戻りポイントへ制御を移す。
これらの処理によりサブルーチンへ制御が移り、関数ボディの命令列が実行される。関数命令の最終行が実行されたのち、次の処理が必要となる。
これらの処理によりメインルーチンへ制御が復帰する。
このパターンは関数の処理内容に関わらず普遍的である。前半の関数呼び出しに相当するパターンを関数プロローグ（）という。後半の関数からの復帰に相当するパターンを関数エピローグ（）という。
関数プロローグ・エピローグは同じ結果が得られるいくつかのパターンが存在する（呼出規約）。例えば引数をスタックに積むパターンとレジスタに置くパターンがある。
機械語とアセンブリ言語.
アセンブリ言語で書かれたプログラムを機械語に変換すれば、その機械語でコンピュータは動く。アセンブラというソフトウェアを使えばアセンブリ言語から機械語への変換を自動的に行うことができる。
機械語プログラムの読み込み.