MSVC 2012 で実行されているコードがあります。
#include <windows.h>
#include <intrin.h>
UINT64 gettime() {
try {
unsigned int ui;
return __rdtscp(&ui);
}
catch (...) {
return __rdtsc();
}
}
__rdtscp() を使用してタイムスタンプを取得しようとしていました。ただし、__rdtscp() がサポートされていないプラットフォームでは、代わりに __rdtsc() に切り替えたいと考えています。
上記のコードは機能しません。__rdtscp() が (特定の VM で) サポートされていない場合、プログラムは単純にクラッシュしました。__rdtscp() がサポートされているかどうかを検出できますが、プログラムをクラッシュさせる方法はありますか?