x86_64
manual
x86_64のレジスタ
https://image.itmedia.co.jp/enterprise/articles/0506/29/figc.jpg
汎用レジスタ
16個
各レジスタに64bitのデータが格納されている
演算の対象や結果を格納できる
x86_64の汎用レジスタ
https://sott0n.github.io/posts/x86_64_basic/
https://www.mztn.org/lxasm64/amd04.html
https://www.itmedia.co.jp/enterprise/articles/0506/29/news002.html
RAX
関数からの戻り値を入れる
RCX
カウンタ
RDI
destination index
関数の第一引数
RSI
source index
関数の第二引数
RSP
スタックポインタとして使う
x86_64のpushやpopは暗黙的にRSPをスタックポインタとして使うような命令になっている
https://techbookfest.org/product/5184806291767296
boothの本
@a4lg: x86_64 にとんでもない拡張がやってきた。一般命令のほぼ全部を拡張、GPR 倍増 (→32)、3 オペランド形式を容認。RISC そのものではないとはいえ、最近の RISC 系 ISA が採用する特徴を踏襲している。
https://zenn.dev/mod_poppo/articles/x86-64-machine-code
GPT-4.icon
x86_64(AMD64, Intel 64)の命名と関係性
ISAの名称は、歴史的な経緯や企業間の命名の違いがあるため、複数の呼び方が存在します。
特にx86_64(64ビット版のx86 ISA)は、AMDとIntelがそれぞれ異なる名称を使ったため、混乱しやすいです。
ISAの正式な名称
table:table
名称 意味・関係 誰が命名したか
---------- ------------- ----------------
x86_64 一般的に使われるISAの名前(非公式) 普及名(業界全体で使用)
AMD64 AMDが開発した64ビットx86拡張 AMD
Intel 64 Intelが独自に使っている名称(AMD64互換) Intel
あ、非公式なんだmrsekut.icon
命名の経緯
1. AMD64(AMDが開発した正式名称)
AMDが開発したx86の64ビット拡張ISAで、2003年に「AMD64」として発表。
それまでのx86(IA-32)は32ビットしか扱えなかったが、AMD64によって64ビット対応が可能に。
2. Intel 64(Intelの独自名称)
Intelは元々Itanium(IA-64)という別の64ビットISAを推進していたが、失敗。
その後、AMD64と互換性のある64ビット拡張を独自に実装し、「Intel 64」と命名。
しかし、事実上はAMD64と同じ仕様。
何じゃそりゃ。同じものに別名をつけるなよmrsekut.icon
3. x86_64(普及した業界標準の呼び方)
公式にはAMD64だが、業界では「x86_64」という名称が広く使われるようになった。
Linuxカーネルや多くのOSでは「x86_64」という名前が使われる。
結論(ISA名としての適切な呼び方)
公式名称(ISAを定義した企業の名称): AMD64
Intelの呼び方(AMD64と互換だがIntelが別名を付けた): Intel 64
業界標準の呼び方(非公式だが広く使われる): x86_64