2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
6 / 376 ツリー ←次へ | 前へ→

【995】CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/5/31(月) 0:26

【1149】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/11(土) 12:06
【1150】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/11(土) 23:22
【1151】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 2:23
【1152】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 10:43
【1153】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 12:47
【1154】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 15:53
【1155】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 16:27
【1156】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 16:58
【1157】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/12(日) 17:08
【1158】Re:CrystalCPUID 感想&要望&バグ報告 To 04/9/12(日) 21:52
【1163】Re:CrystalCPUID 感想&要望&バグ報告 ひよひよ 04/9/20(月) 0:58

【1149】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/11(土) 12:06 -

引用なし
パスワード
   ▼ひよひよさん:
>▼Toさん:
>>2度手間になるので、ソースファイルのアップデートをお願いします。
>了解です。
>今日中に最新版のソースをアップしておきます。

実際、日記に書かれている
    YAMAHA か Roland のどちらかが 64 ドライバを書いてくれれば
    (といってもコンパイルし直してテストをするだけのはずだが)
通りです。
ご自身でやられては 如何ですか?

【1150】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/11(土) 23:22 -

引用なし
パスワード
   ■To 様
少々苦労しましたが、無事 64bit 化が(ほぼ)完了しました。
ついに 64bit 環境でも PCI にアクセスできるようになりました。

ご存知かとは思いますが

AMD64 開発者情報
http://www.amd64dev.com/

が大変参考になりました。

ただ、ドライバのビルド時に HalGetInterruptVector なんて関数知らんぞ。と怒られてしまったので、コメントアウトしていたりします。

http://www.osr.com/ddk/kmarch/k103_25de.htm

によると廃止される予定みたいですね。Crystal シリーズは割り込み関連使ってないし、今後も遣う予定もないのでバッサリ消してしまった方が良いのかも...

【1151】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 2:23 -

引用なし
パスワード
   >少々苦労しましたが、無事 64bit 化が(ほぼ)完了しました。
>ついに 64bit 環境でも PCI にアクセスできるようになりました。
>
ご苦労さまでした。

64bit化という言葉に、つい "ドライバ構造が変わったんだろう" と構えてしまいますが、
基本的には、日記で、述べられている通り
単にx86-64環境で再コンパイルするだけです。

細かいテクの紹介ばかりで、この事をストレートに紹介しているページが少なく
結果 遠回りしてがちですが、
本質がわかってしまえば、後はポインタ長に注意してソースを見直す作業という程度です。

>ご存知かとは思いますが
>
>AMD64 開発者情報
>http://www.amd64dev.com/
>
>が大変参考になりました。
>
私には、__readmsr();と __writemsr(); の方が参考になりました。
調べてみると、その他にもCPUに1対1の命令が結構あったります。
基本的に、アセンブラは使うなという事なんでしょうな。

>ただ、ドライバのビルド時に HalGetInterruptVector なんて関数知らんぞ。と怒られてしまったので、コメントアウトしていたりします。
>http://www.osr.com/ddk/kmarch/k103_25de.htm
>
今後、本当に外されるのかは判りませんが、現状のライブラリにはそのまま残っていますので、
コンパイル&リンクは可能です。(もっとも動作の程は判りませんが・・・)

>によると廃止される予定みたいですね。Crystal シリーズは割り込み関連使ってないし、今後も遣う予定もないのでバッサリ消してしまった方が良いのかも...

使う予定が無いのであれば、外した方がよいと思います。
そうすると、IOとMEM-Map & msr程度だけになってしまうので、もっとスッキリします。
必要な物だけにして、新たに書き直した方がよいのでは?

【1152】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 10:43 -

引用なし
パスワード
   ▼Toさん:
>私には、__readmsr();と __writemsr(); の方が参考になりました。
>調べてみると、その他にもCPUに1対1の命令が結構あったります。
>基本的に、アセンブラは使うなという事なんでしょうな。
CpuInfoX64 ディレクトリには cpuid.asm が入っているように、readmsr, writemsr, rdtsc に対応する命令があるにもかかわらず何故か cpuid に対応する命令がない!?

http://www.osr.com/ddk/kmarch/64bitamd_28fb.htm

この問題には 64bit 化に取り掛かかり始めたときに結構苦労しています。百歩譲ってインラインアセンブラが使えないのはいいとしても、書き方が昔(386)とだいぶ違うので難儀しました。

>>によると廃止される予定みたいですね。Crystal シリーズは割り込み関連使ってないし、今後も遣う予定もないのでバッサリ消してしまった方が良いのかも...
>使う予定が無いのであれば、外した方がよいと思います。
>そうすると、IOとMEM-Map & msr程度だけになってしまうので、もっとスッキリします。
>必要な物だけにして、新たに書き直した方がよいのでは?
そのうち挑戦してみたいと思います。

【1153】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 12:47 -

引用なし
パスワード
   >CpuInfoX64 ディレクトリには cpuid.asm が入っているように、readmsr, writemsr, rdtsc に対応する命令があるにもかかわらず何故か cpuid に対応する命令がない!?
>

ん、これじゃないの?
何で、頭に "__temp"なんてのがついているか判りませんが。
最適化 /Og(Free Buildのデフォ)を指定すると第2パラメータが消失するようだし、
これも 何れなくなるのかな?

-----
; 391 :     ULONG dwEAX;
; 392 :     ULONG dwREGs[4];
; 393 :

; 394 :     dwEAX = 1;   // 適当な数字
 00023    c7 44 24 18 01
    00 00 00     mov     DWORD PTR dwEAX$[rsp], 1

; 395 :     __temp_cpuid(&dwREGs[0], dwEAX);
 0002b    8b 44 24 18     mov     eax, DWORD PTR dwEAX$[rsp] <- 消失します。
 0002f    0f a2         cpuid
 00031    44 8b c3     mov     r8d, ebx
 00034    4c 8d 4c 24 08     lea     r9, QWORD PTR dwREGs$[rsp]
 00039    41 89 01     mov     DWORD PTR [r9], eax
 0003c    48 8d 44 24 08     lea     rax, QWORD PTR dwREGs$[rsp]
 00041    44 89 40 04     mov     DWORD PTR [rax+4], r8d
 00045    48 8d 44 24 08     lea     rax, QWORD PTR dwREGs$[rsp]
 0004a    89 48 08     mov     DWORD PTR [rax+8], ecx
 0004d    48 8d 44 24 08     lea     rax, QWORD PTR dwREGs$[rsp]
 00052    89 50 0c     mov     DWORD PTR [rax+12], edx

----

>この問題には 64bit 化に取り掛かかり始めたときに結構苦労しています。百歩譲ってインラインアセンブラが使えないのはいいとしても、書き方が昔(386)とだいぶ違うので難儀しました。
>
同感です。せっかくレジスタが増えたのに・・
ml64.exe も多言語とインターフェリス周りを含めてイマイチだし

【1154】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 15:53 -

引用なし
パスワード
   ▼Toさん:
>; 395 :     __temp_cpuid(&dwREGs[0], dwEAX);
えっ?こんな関数ありましたか?
う〜む Platform SDK のバージョンが違うのかも・・・。最新版をダウンロードしてきたので、早速アップデートしてみます。

>>この問題には 64bit 化に取り掛かかり始めたときに結構苦労しています。百歩譲ってインラインアセンブラが使えないのはいいとしても、書き方が昔(386)とだいぶ違うので難儀しました。
>同感です。せっかくレジスタが増えたのに・・
>ml64.exe も多言語とインターフェリス周りを含めてイマイチだし
デバイスドライバやインラインアセンブラを使っていないソフトは本当にコンパイルしなおすだけって感じだと思うのですが、インラインアセンブラが使えない&ml64 の書式がだいぶ 386 時代と異なるというわけで敷居が高すぎです。こうやって本質とは関係ないところで苦労する時間が非常に長かった・・・。

【1155】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 16:27 -

引用なし
パスワード
   >>; 395 :     __temp_cpuid(&dwREGs[0], dwEAX);
>えっ?こんな関数ありましたか?
>う〜む Platform SDK のバージョンが違うのかも・・・。最新版をダウンロードしてきたので、早速アップデートしてみます。

Server 2003 Driver Development Kit(Build 3790) というやつです。(一年ほど前の)
が、マニュアルを見て調べている訳ではないので、このバージョンの説明にも
記載されているのかどうかわかりません。

実際の処、先ほどご紹介頂くまで
 >http://www.osr.com/ddk/kmarch/64bitamd_28fb.htm
なる存在も知りませんでした。
 __readmsr();も __writemsr(); も
ご自身で独自に調査さ解析された物だと思っていました。(なかなか"ヤルナー"と感心)

【1156】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 16:58 -

引用なし
パスワード
   ▼Toさん:
>Server 2003 Driver Development Kit(Build 3790) というやつです。(一年ほど前の)
>が、マニュアルを見て調べている訳ではないので、このバージョンの説明にも
>記載されているのかどうかわかりません。
DDK の方でしたか。早速確認してみます。

>実際の処、先ほどご紹介頂くまで
> >http://www.osr.com/ddk/kmarch/64bitamd_28fb.htm
>なる存在も知りませんでした。
> __readmsr();も __writemsr(); も
>ご自身で独自に調査さ解析された物だと思っていました。(なかなか"ヤルナー"と感心)
えと、今は MSDN で検索しても出てこないような気がするのですが、少なくとも以前はMSDN でAMD64へ移植するための注意点をまとめたページがあって、そこに rdmsr wrmsr はわざわざインラインアセンブラしなくても組み込み関数用意しときましたよ!!って感じの紹介がされていました。探し方がまずいだけで本当はあると思うのですが・・・。

【1157】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/12(日) 17:08 -

引用なし
パスワード
   探したらありました。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kmarch/hh/kmarch/64bitamd_b20adad8-0921-4166-ba42-25edcb65277f.xml.asp

ここを参考にしたわけです。当時と URL は変わっていますが...

【1158】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 To  - 04/9/12(日) 21:52 -

引用なし
パスワード
   >ここを参考にしたわけです。当時と URL は変わっていますが...

色々とご紹介頂きありがとうございました。

で、
 __temp_cpuid( , );
は、最新版では無くなっておりますでしょうか?(名前からしていかにも怪しいし・・)

----

上のCPUID命令は個人的には、殆ど使わないので実害は無いのですが、
"UnDocumented" といいながら今でも健在。
個人的にも、色々とお世話になっていた、
 void Ke386SetIoAccessMap(int, IOPM *);
 void Ke386QueryIoAccessMap(int, IOPM *);
 void Ke386IoSetAccessProcess(PEPROCESS, int);
は奇麗サッパリ無くなっています。(これ痛い!)

代替案でも考えないと、来年辺りには今までみたいに手軽に遊べなくなってしまうが痛い。
(純なソフトの話では無く、電気工作がらみの事ですけど・・・)

【1163】Re:CrystalCPUID 感想&要望&バグ報告
←back ↑menu ↑top forward→
 ひよひよ  - 04/9/20(月) 0:58 -

引用なし
パスワード
   ▼Toさん:
> __temp_cpuid( , );
>は、最新版では無くなっておりますでしょうか?(名前からしていかにも怪しいし・・)
Windows DDK 3790.1069 と Windows DDK 3790.1069 で試してみたのですが、__temp_cpuid 関数はありませんでした。もう、cpuid 命令は発行できるので必要はないのですが、標準であるのなら ASM しなくても良くて便利かなと。

6 / 376 ツリー ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
ページ:  ┃  記事番号:   
52764
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free