アカウント名:
パスワード:
これはIntel側としては、データシートに記載した仕様通りの動作です。仕様を確認せずにAMDと完全互換のつもりでコードを書いた準仮想マシン側の不手際だし、ましてやCPUの脆弱性などというものではありません。
仕様がAMDと完全互換ではないという点について不備であるかどうかの意見は別にありますが、AMDとIntelで完全互換だなんてことはありえないわけで、仮想マシンを作る世界のレベルでそこを気にしないというのは、言い訳のしようがないでしょう。
仕様として書かれているとしても、それがセキュリティホールになりうるものならば、仕様自体に欠陥があると言えるのではなかろうか?
# 仕様は読んでないけどさー
仕様通りだから何? 仕様に欠陥があるというだけのこと。.客が仕様だといえばカラスが白いのも仕様であるという開発しかできない底辺コーダーの認識では「仕様の欠陥」など定義により存在しないのかもしれないけど。
部門名は「仕様だからしようがない」で
「Microsoftのバグ」との戦い [nikkeibp.co.jp]ってやつですね。
まぁだからどこもとっとと対応したんじゃない。後出しで正論振りかざしたって君が偉くなった気になれるだけで何もいいことないよ。
逆にAMDがSSEとかの命令の一部を微妙にバラバラに非互換にしたらCPUモデルの検出が必要になって普及を進ませなくするという戦術も可能なわけですかね?「ごめんちゃい、間違っちゃいました」と言ってしまったほうが賢いような…
そういえば昔MMXの頃、AMDのMMXを認識できないソフトってあったよね。確か、セガのPC版のバーチャロンがそうだったはず。
IntelのMMX使い方マニュアルにおいて、MMXが使用可能であるかを確かめる手順のまず初めが「GPUIDでVenderIDが"GenuineIntel"であるか確かめる」になっていて愚直にそのまま実装してしまうと、Intel以外のCPUではMMXが使えなくなりあとからパッチをリリースしなくてはいけなくなるっていう罠じゃなかったかな?
なので、"GenuineIntel"の文字列(というか数値群)を"AuthenticAMD"とか"CyrixInstead"とか"CentaurHauls"とか"RiseRiseRise"とかに書き換えたり、文字列の一致チェック後の条件分岐命令(RETNZだったかな?)をNOP(かそのCPUでしか使わないなら逆条件の分岐命令)に書き換えれば簡単に動くようになったはず
これを非互換といってしまうと、Intel製ではないのに"GenuineIntel"を名乗るしかないわけでそれはどうなんでしょうね
さらに古いの「NECO」「NECITSU」を思い出してしまうおっさんAC
VenderIDでMMX等の拡張命令の有無がわかる訳でも無いのにそれを確認させるなんてねぇ。
いや、違うベンダを想定した場合、MMX用に拡張した命令コードやフラグ情報を別の命令に使っているベンダが存在する可能性があります。だからマニュアル的にはベンダIDをチェックした上で拡張命令の存在をチェックする、としなければ不味いです。無論、プログラム側ではサポートしうるすべてのCPUベンダ毎にそれぞれのベンダのマニュアルに応じた拡張命令の存在確認処理を行い演算ルーチンを切り替える必要があります。ベンダIDチェックをスキップすることが可能なのは、サポートするすべてのCPUでベンダIDチェックを除き同じ方法でMMX拡張命令が使用可能で、かつ、サポートするCPUベンダ以外のCPUでは(暴走その他の危険を含むレベルでの)動作対象外とした場合のみです。
推奨環境以外でも最低限動くって事を意識した場合、ベンダIDチェックは必須です。
この問題は、AMDがAMD-Vを発表した時に、当初から「AMDは」問題だとして指摘していた記憶がある。その後、intelがVTを改訂していくなかで変更があったのかどうかは知らんけど。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
仕様です (スコア:1)
これはIntel側としては、データシートに記載した仕様通りの動作です。
仕様を確認せずにAMDと完全互換のつもりでコードを書いた準仮想マシン側の不手際だし、
ましてやCPUの脆弱性などというものではありません。
仕様がAMDと完全互換ではないという点について
不備であるかどうかの意見は別にありますが、
AMDとIntelで完全互換だなんてことはありえないわけで、
仮想マシンを作る世界のレベルでそこを気にしないというのは、
言い訳のしようがないでしょう。
Re:仕様です (スコア:1, すばらしい洞察)
仕様として書かれているとしても、それがセキュリティホールになりうるものならば、仕様自体に欠陥があると言えるのではなかろうか?
# 仕様は読んでないけどさー
Re:仕様です (スコア:1)
Re:仕様です (スコア:1)
仕様通りだから何? 仕様に欠陥があるというだけのこと。.
客が仕様だといえばカラスが白いのも仕様であるという開発しかできない底辺コーダーの認識では「仕様の欠陥」など定義により存在しないのかもしれないけど。
Re:仕様です (スコア:1)
Re:仕様です (スコア:1)
部門名は「仕様だからしようがない」で
Re: (スコア:0)
「Microsoftのバグ」との戦い [nikkeibp.co.jp]ってやつですね。
Re: (スコア:0)
まぁだからどこもとっとと対応したんじゃない。
後出しで正論振りかざしたって君が偉くなった気になれるだけで何もいいことないよ。
Re: (スコア:0)
逆にAMDがSSEとかの命令の一部を微妙にバラバラに非互換にしたらCPUモデルの検出が必要になって
普及を進ませなくするという戦術も可能なわけですかね?
「ごめんちゃい、間違っちゃいました」と言ってしまったほうが賢いような…
Re: (スコア:0)
そういえば昔MMXの頃、AMDのMMXを認識できないソフトってあったよね。
確か、セガのPC版のバーチャロンがそうだったはず。
あれは… (スコア:0)
IntelのMMX使い方マニュアルにおいて、MMXが使用可能であるかを確かめる手順の
まず初めが「GPUIDでVenderIDが"GenuineIntel"であるか確かめる」になっていて
愚直にそのまま実装してしまうと、Intel以外のCPUではMMXが使えなくなり
あとからパッチをリリースしなくてはいけなくなるっていう罠じゃなかったかな?
なので、"GenuineIntel"の文字列(というか数値群)を"AuthenticAMD"とか
"CyrixInstead"とか"CentaurHauls"とか"RiseRiseRise"とかに書き換えたり、
文字列の一致チェック後の条件分岐命令(RETNZだったかな?)を
NOP(かそのCPUでしか使わないなら逆条件の分岐命令)に書き換えれば簡単に動くようになったはず
これを非互換といってしまうと、Intel製ではないのに"GenuineIntel"を名乗るしかないわけで
それはどうなんでしょうね
さらに古いの「NECO」「NECITSU」を思い出してしまうおっさんAC
Re: (スコア:0)
VenderIDでMMX等の拡張命令の有無がわかる訳でも無いのにそれを確認させるなんてねぇ。
Re: (スコア:0)
いや、違うベンダを想定した場合、MMX用に拡張した命令コードやフラグ情報を別の命令に使っているベンダが存在する可能性があります。だからマニュアル的にはベンダIDをチェックした上で拡張命令の存在をチェックする、としなければ不味いです。
無論、プログラム側ではサポートしうるすべてのCPUベンダ毎にそれぞれのベンダのマニュアルに応じた拡張命令の存在確認処理を行い演算ルーチンを切り替える必要があります。
ベンダIDチェックをスキップすることが可能なのは、サポートするすべてのCPUでベンダIDチェックを除き同じ方法でMMX拡張命令が使用可能で、かつ、サポートするCPUベンダ以外のCPUでは(暴走その他の危険を含むレベルでの)動作対象外とした場合のみです。
推奨環境以外でも最低限動くって事を意識した場合、ベンダIDチェックは必須です。
Re: (スコア:0)
この問題は、AMDがAMD-Vを発表した時に、当初から「AMDは」問題だとして指摘していた記憶がある。
その後、intelがVTを改訂していくなかで変更があったのかどうかは知らんけど。