アカウント名:
パスワード:
x64版Windowsで64bitコード←→32bitコード間の呼び出しができない(thunkがない)のは、Itanium版Windowsの仕様に合わせたから。そのせいで64bitコードと32bitコードをシームレスに実行できるAMD64のメリットがWindowsにおいては全く生かされていない。
言わばItaniumの負の遺産。後方互換性にこだわるMicrosoftのことだから、128bit版Windowsが出るまでこの仕様に悩まされそうorz
なんで誰でも分かってる様な調べりゃすぐ出てくる既出なことを説明せにゃならんのだねそれをすることで我々にどんなメリットがありますか?
#しかも、あなたは多分説明しても分からないレベルでしょうに
そもそも64bitだというだけで、AMD64版がItanium版の系譜だと思いこんでる人が異常なんじゃないかと。#全然別のアーキテクチャだし64bit版WindowsはむしろIA32ベースじゃないのかと言いたい
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
64bit版Windowsのタコな仕様はItaniumのせい (スコア:2, 興味深い)
x64版Windowsで64bitコード←→32bitコード間の呼び出しができない(thunkがない)のは、Itanium版Windowsの仕様に合わせたから。
そのせいで64bitコードと32bitコードをシームレスに実行できるAMD64のメリットがWindowsにおいては全く生かされていない。
言わばItaniumの負の遺産。
後方互換性にこだわるMicrosoftのことだから、128bit版Windowsが出るまでこの仕様に悩まされそうorz
Re: (スコア:1, すばらしい洞察)
もう少し具体的に説明してくれませんか? あるいは、外部のソースを。
Re: (スコア:0)
なんで誰でも分かってる様な調べりゃすぐ出てくる既出なことを説明せにゃならんのだね
それをすることで我々にどんなメリットがありますか?
#しかも、あなたは多分説明しても分からないレベルでしょうに
Re: (スコア:1, 興味深い)
AMD64なら32bitと64bitのコードがシームレスに実行できるといっても、現実的には64bitModeとCompatibilityModeの切り換えは必要なので、同一OSインスタンス上で32bitのプロセスと64bitのプロセスが同居できるという意味です。
(64bitModeのまま従来の32bitのコードを実行できるといっても、CPUが命令をデコードして実行できるだけであって、プログラマが望むような動作をするわけではありません。)
64bitのEXEから32bitのDLLを呼び出せない、32bitのEXEから64bitのDLLを呼び出せないという仕様は当然です。Win32APIのDLLならExportしているプロシージャの引数の仕様が明らかですからthunkを作ることができてWOW64がそうしていますが、しかし、サードパーティのDLLのためのthunkはマイクロソフトには作れません。サードパーティがthunkを提供するなら64bit版のDLLをビルドして提供したほうがいいでしょう。
Re: (スコア:0)
AMD64のモード切り換えはセグメントで自動的に行われるので「シームレス」。これはIA64のようにモード遷移のための命令が必要ないことを指している。
Win32ではプロセスにフラットなメモリ空間が提供されるが、仮想アドレスが重複しないように複数のセグメントが配置されている。ユーザーのコードがセグメント切り換えを意識しないだけで、CPUが自動的にセグメントを切り換えている。したがって、AMD64では同一プロセス内に64bit Modeで走らせるコードセグメントとCompatibility Modeで走らせるコードセグメントを混在させることが可能。
しかし、そ
Re: (スコア:0)
そもそも64bitだというだけで、AMD64版がItanium版の系譜だと思いこんでる人が異常なんじゃないかと。
#全然別のアーキテクチャだし64bit版WindowsはむしろIA32ベースじゃないのかと言いたい
Re:64bit版Windowsのタコな仕様はItaniumのせい (スコア:0)
IA64版で整備したものがAMD64版でも踏襲されています。