Sunday, July 24, 2016

Extendmax 18






+

カ テ ゴ リ ー 別 ア ー カ イ ブ: コ ー ド ちなみにこの命令は実行しているCPUがIntel製かAMD製か、などを直接判別するために使われる命令でもあります。そのため、CPUIDの結果はCPUの種類ごとにかなり異なったものとなる場合分けがとんでもなく必要な命令だったりします。CPUID命令実行時にどのような処理結果となるかを直接知りたい人は各社が公開している資料を見てみるといいと思います。Intelの場合は 「Intel 64 et Manuel 2A IA-32 Architectures Software Developer」 に, AMD の 場合 は 「Volume 3 Manuel d'usage général de l'architecture AMD64 Programmer et système Instructions」 に 記述 が あ り ま す. 命令 の サ ポ ー ト フ ラ グ が い ろ ん な 場所 に · · · eax=0としてcpuidを実行。eaxに基本情報として取得できるcpuidの最大値、ebx, edx, ecxの順番にCPUの制作元文字列(ASCII)が返る。 基本 情報 に 1 以上 が 含 ま れ な い 場合 は こ れ で 終了. eax=0x80000000としてcpuidを実行。eaxに拡張情報として取得できるcpuidの最大値が返る。なお、eaxに(符号なしとして)0x80000000を超える値が返らないときは拡張情報は無し。 eax=1としてcpuidを実行。eaxにCPUのバージョン情報、edxに拡張命令フラグその1、ecxに拡張命令フラグその4が返る。 拡 張 情報 が な い 場合 は こ れ で 終了 eax=0x80000001としてcpuidを実行。edxに拡張命令フラグその2、ecxに拡張命令フラグその3が返る eax = 0x80000002 0x80000004 ~ ま で は CPU の 名 前 情報 が 返 る. 基本 情報 に 7 以上 が 含 ま れ な い 場合 は こ れ で 終了. eax=7、ecx=0としてcpuidを実行。eaxにeax=7としたときにecxに与えることができる最大値、ebxに拡張命令フラグその5が返る。


More


No comments:

Post a Comment