付録B付録B x86-64アーキテクチャ

 1971年にIntelは4004という4ビットのマイクロプロセッサを発売した。その後、1974年に8ビットマイクロプロセッサの8080を発売し、1978年に16ビットプロセッサの8086を発売した。x86アーキテクチャは8086から拡張され続きてきたアーキテクチャである。8086発表の後、Intelは1985年に32ビットCPUの80386を発表した。しかし、続く64ビット版CPUは、IntelではなくAMDが、x86互換の64ビットCPUアーキテクチャであるAMD64を発表した。

 AMD64が登場するまでは、Intelのx86アーキテクチャをAMDが互換CPUとして販売していたが、AMD64登場後は、AMDのAMD64アーキテクチャをIntelが互換CPUとして販売している。x86-64はそれらアーキテクチャを総称した名称であり、x64などとも呼ばれる。x86-64は2020年の現在では、PC、サーバ用途で主流のCPUアーキテクチャであるが、x86から互換性を保ちつつ拡張が続けられてきたため8086の実行バイナリも再コンパイルなしで動作する。実際にはOSやライブラリなどの制約があるため難しい面もあるが、それでも、40年以上も前のコードが動作するというのは凄いことである。本章では、このx86-64アーキテクチャについて簡単に解説する。

B.1 レジスタ

 x86-64では次の表で示す、合計16個の整数値を格納可能なレジスタが用意されている。

表B-1 x86-64の整数値レジスタ

レジスタ 用途
rax 汎用レジスタ、アキュムレータ
rbx 汎用レジスタ、(ベースレジスタ)
rcx 汎用レジスタ、カウンタレジスタ ...

Get 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.