x64移行でのインラインアセンブラ修正
Win32のプログラムをx64に移行する仕事を頼まれました。
プラットフォームをx64に移してビルドを行ったところ、
インラインアセンブラを使用していた以下のコードでエラーが発生しました。
~前略~
__asm {
mov eax, 0; /* EAXに0を入れる */
cpuid; /* CPUID実行 */
mov dword ptr [vender_sig + 0], ebx; /* 最初の4文字 */
mov dword ptr [vender_sig + 4], edx; /* 次の4文字 */
mov dword ptr [vender_sig + 8], ecx; /* 最後の4文字 */
mov byte ptr [vender_sig + 12], 0; /* ラストに \0 */
}
~中略~
__asm {
mov eax, 1; /* EAXに1を入れる */
cpuid; /* CPUID実行 */
mov dword ptr [prosessor_sig], eax; /* プロセッサシグネチャ */
mov dword ptr [function_flag], ebx; /* ファンクションフラグ */
mov dword ptr [feature_flag2], ecx; /* Featureフラグ */
mov dword ptr [feature_flag1], edx; /* Featureフラグ */
}
~中略~
__asm {
mov eax, 1;
cpuid; /* CPUID実行 */
mov dword ptr [t], eax; /* top */
mov eax, 3;
cpuid; /* CPUID実行 */
mov dword ptr [m], edx; /* middle */
mov dword ptr [b], ecx; /* bottom */
}
~後略~
x64ではインラインアセンブラが使用できないということはわかったのですが、
これをどう直していいかがわかりません。
アドバイスよろしくお願い致します。