2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
新規投稿
┃
ツリー表示
┃
スレッド表示
┃
一覧表示
┃
トピック表示
┃
番号順表示
┃
検索
┃
設定
┃
ホーム
177 / 2351
←次へ
|
前へ→
【2201】WinRing0 RC2 の IsCpuid()
←back
↑menu
↑top
forward→
DULL
- 07/9/13(木) 23:56 -
引用なし
パスワード
こんばんは。
WinRing0 のソ〜スを見ていて気になったことが1つありました。
CPUID の判定は命令非サポ〜トの Exception をハンドリングしているようですが
フラグレジスタのビット21が書き換えれるかどうかでチェックすることができます。
これは、Intel の正式ドキュメントにも記述があるようです。
↓こんな感じ。
int CheckCPUID(void)
{
unsigned long fregs;
asm{
.386
pushfd
pushfd
pop eax
or eax,200000h
push eax
popfd
pushfd
pop eax
popfd
nop
nop
mov DWORD PTR [fregs],eax
}
// bit 21 == 1 なら CPUID 命令が使用可能
return((fregs&0x200000)>>21);
}
現状では486DX以前とP5クラスの互換CPUでしか意味を持ちませんが…(^_^;
ではでは。
456 hits
【2201】WinRing0 RC2 の IsCpuid()
DULL
07/9/13(木) 23:56
≪
【2202】Re:WinRing0 RC2 の IsCpuid()
ひよひよ
07/9/14(金) 8:53
177 / 2351
←次へ
|
前へ→
新規投稿
┃
ツリー表示
┃
スレッド表示
┃
一覧表示
┃
トピック表示
┃
番号順表示
┃
検索
┃
設定
┃
ホーム
ページ:
┃
記事番号:
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free