まず、Visual Studio のx86でC++とアセンブリ言語を混在して使用する方法を紹介します。X86ではインラインアセンブラを利用できますので、比較的簡単に記述できますが、C++はもちろん、アセンブリ言語を理解しておくのは前提です。
インラインアセンブリで記述(x86)
Visual Studio の64ビット(x64)はインラインアセンブリを許していません。このため、Visual Studio のメニューで [x86] を選ぶか、[x86 Native Tools Command Prompt for VS 20xx]のコマンドラインでビルドしてください。
本プログラムは、過去記事の
arques.hatenablog.com
をインラインアセンブリへ書き換えたようなプログラムです。以降に、C++のソースリストを示します。
#include <iostream> using namespace std; int main() { char CPUString[(sizeof(int)) * 3 + 1]{}; int cpuIdFunNo = 0; _asm { mov eax, cpuIdFunNo cpuid mov dword ptr [CPUString + 0], ebx mov dword ptr [CPUString + 4], edx mov dword ptr [CPUString + 8], ecx xor al, al mov byte ptr [CPUString + 12], al } cout << "Vender Id: " << CPUString << endl; }
実行例:Vender Id: GenuineIntel
コマンドラインでビルド
コマンドライン[x86 Native Tools Command Prompt for VS 20xx]を使って、ビルド・実行した例も示します。
Visual Studio をインストールするとスタートメニューに [x86 Native Tools Command Prompt Visual Studio 20xx] が追加されますので、それを使用します。メニューから探すのが面倒な時は、Windowsキーを押して、その後「x86 Native … 」と入力すると [x86 Native Tools Command Prompt Visual Studio 20xx] が現れますので、Enterキーを押して起動してください。ほとんどの環境では、「x86」まで入力した時点で現れるでしょう。