アセンブリ言語
x86/IA-32プロセッサにおいて8ビット即値をレジスタに入れる命令を例にとる。
この命令のバイナリコードは 10110 で、その後に3ビットのレジスタを指定する識別子が続く。AL レジスタの識別子は 000 なので、次に示す機械語は AL レジスタに 01100001 というデータをロードする。
このバイナリコードを人間が読みやすいように十六進法で表現すると次のようになる。
ここで、B0は「ALに後続の値をコピーする」ことを意味し、61は01100001を十六進法で表したもの(十進法では97)である。インテルのアセンブリ言語では、この種の命令に MOV というニーモニックを割り当てており、セミコロン以下に説明的コメントを添えたアセンブリ言語での表現は次のようになる。
この場合、定数61Hがソース、レジスタALがデスティネーションに該当し、命令が実行されると、定数61Hが、レジスタALに単純に格納される。これが人間にとってはさらに読みやすく覚えやすい。
アセンブラを用いる目的として以下が挙げられる。
高速: レジスタ利用やループ展開の最適化
省フットプリント: ランタイムや標準ライブラリの排除
リアルタイム(時間的正確性): GCスパイク、ページフォルト、プリエンプションの排除
ハードウェア操作
高級言語非対応命令の利用
挙動理解