通信用語の基礎知識 全国のICカードこれひとつ 戻る

x64
辞書:科学用語の基礎知識 中央演算処理装置用語x86編 (IYCP86)
読み:エックスろくよん
外語:x64
品詞:名詞

x86の命令セットアーキテクチャーを64ビットに拡張したものの俗称。

目次
概要

16ビットから始まったx86の命令セットアーキテクチャーは、i386から命令セットの大枠は維持したまま32ビット化され「IA-32」になった。

そこで、従来のIA-32の延長線上にある64ビット命令セットも同様に「IA-64」と呼びたいところだが、Intelは64ビット化は非互換の命令セットに移行する計画を立て、これに「IA-64」と命名していた。

結果として「IA-64」は失敗に終わるが、しかしこの理由により「IA-64」という名が使えないことになったため、その代替として使われるようになった語の一つが「x64」である。

呼称
由来

AMDやIntel、他にVIAなども、64ビット機能については各メーカーが独自の呼び方をしていた。

従来のIA-32の延長線上にある64ビット命令セットは、AMDAMD64 ISA(旧称x86-64)、IntelIntel 64(旧称EM64T)と呼んでいる。

現状

その源流がAMD64にあることは自明であるが、これにはAMDという企業名が含まれるため、「中立的な呼称」が求められた。

AMDが当初使っていた「x86-64」が使われることもあったが、従来の「x86」と同じ文字数で、かつ似た名称である「x64」がやがて普及するようになった。

MicrosoftOracleなどが使用していることから、半ば業界標準の呼称であるとも言える。

特徴

以下は、AMD64 ISA、Intel 64ともに共通する。

拡張点

ロングモード環境では、次のような特徴を有する。

追加された命令

REX.Wは、REXプリフィクスのWフィールドが1となるバイト。他のフィールドが0なら48hだが、他のフィールド次第で、48hから4fhまで変化する。

使用できない命令
空きオペコード

64ビットで無効命令となった1バイトオペコードのうち、割り当てが決まっていないものには以下のものがある。

将来的に、何らかの拡張に使われると思われる。

補足
オペコード

具体的には、ロングモードでは標準で32ビットレジスター参照となり、従来の32ビット動作と互換性がある。

例えば、次の命令を例とする。

16ビットの場合は「66」のプリフィックスを付ける。ここまではIA-32と同様である。

64ビット演算の場合は、REXプリフィックスを付けてビット長を制御する。この点がIA-32との違いである。例えば「48」のプリフィックスを付けると、次のようになる。

この目的のため、1バイト目が40H〜4FHの範囲は、従来のx86命令と互換性がない。

なお、8ビットの場合はIA-32と同様、1バイト目のWフィールドを0にして表現する。

inc/dec命令

REXプリフィックスのため、0x40〜0x4fから始まる旧来のx86命令(inc reg16、dec reg16)はロングモードでは使用できず、これはロングモードでは別の機械語コードを使用する。

例えば、40のinc eaxは、AMD64 ISAではFF C0になる。この2バイトでの表現は従来のx86から存在したが、冗長となるため従来は使われていなかったものである。

プログラム動作中にロングモードかどうかを確認するには、IA32_EFERレジスターのビット8を参照し(但し特権命令(RING 0)でないと参照できない)、ここが1ならロングモードと判断する。

リンク
用語の所属
64
関連する用語
x86
REXプリフィックス
VEXプリフィックス
IA-32
ロングモード
レガシーモード
AMD64 ISA
Intel 64

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic