アカウント名:
パスワード:
x64版Windowsで64bitコード←→32bitコード間の呼び出しができない(thunkがない)のは、Itanium版Windowsの仕様に合わせたから。そのせいで64bitコードと32bitコードをシームレスに実行できるAMD64のメリットがWindowsにおいては全く生かされていない。
言わばItaniumの負の遺産。後方互換性にこだわるMicrosoftのことだから、128bit版Windowsが出るまでこの仕様に悩まされそうorz
Windows NTでセグメントが使えない(少なくともユーザーモードのCプログラムから隠蔽されている)のがRISCプロセッサの負の遺産だとは思わないけどなあ。それは今だから言えることかもしれないけど、128bit版Windowsが出る頃になったらWOW64の仕様についてもやっぱり同じような感想を持つんじゃないかな。
いや, UNIXはセグメントありますよ. 例えば初期の VAX-11 [roguelife.org]のころからセグメンテーション機構を利用していますし, セグメンテーションバイオレーションなんてエラーはセグメント機構を使ったメモリ保護が無ければ出ようがないでしょう.
それに, セグメントの評判を落としたことにインテルの責が無いとは言えないでしょう. 386登場以前は1セグメントで取り扱えるアドレス空間が64k(16bit)に限られていて, ちょっとプログラムの規模が大きくなるとプロセス内でセグメントを動的に設定しなおすというアクロバティック
80286は?それこそ80286でせめてセグメントサイズ1MBにできればよかったんですが。別にハイエンドでもない68000は16MBリニアアクセスできましたし。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
64bit版Windowsのタコな仕様はItaniumのせい (スコア:2, 興味深い)
x64版Windowsで64bitコード←→32bitコード間の呼び出しができない(thunkがない)のは、Itanium版Windowsの仕様に合わせたから。
そのせいで64bitコードと32bitコードをシームレスに実行できるAMD64のメリットがWindowsにおいては全く生かされていない。
言わばItaniumの負の遺産。
後方互換性にこだわるMicrosoftのことだから、128bit版Windowsが出るまでこの仕様に悩まされそうorz
Re: (スコア:0)
Windows NTでセグメントが使えない(少なくともユーザーモードのCプログラムから隠蔽されている)のがRISCプロセッサの負の遺産だとは思わないけどなあ。
それは今だから言えることかもしれないけど、128bit版Windowsが出る頃になったらWOW64の仕様についてもやっぱり同じような感想を持つんじゃないかな。
Re: (スコア:0)
現在でもグーグルのNaClなどで活用されていますから、RISCプロセッサというよりもセグメントのないOSつまりUNIXの負の遺産ですね。
8086で、セグメントについての無知ゆえの勘違い思い込みからトラウマになった人が影響力を持ったからかもしれない。MSは一役買ってるな。DRとインテルは無罪。
Re: (スコア:3, 興味深い)
いや, UNIXはセグメントありますよ. 例えば初期の VAX-11 [roguelife.org]のころからセグメンテーション機構を利用していますし, セグメンテーションバイオレーションなんてエラーはセグメント機構を使ったメモリ保護が無ければ出ようがないでしょう.
それに, セグメントの評判を落としたことにインテルの責が無いとは言えないでしょう. 386登場以前は1セグメントで取り扱えるアドレス空間が64k(16bit)に限られていて, ちょっとプログラムの規模が大きくなるとプロセス内でセグメントを動的に設定しなおすというアクロバティック
Re: (スコア:0)
VAXなどでページング機構が導入されるとそちらを使いセグメンテーションは捨てていますね。
8086は最初からミッドレンジのアプリケーションプロセッサでマニュアルにも明記されていました。ハイエンドではないですね。
あなたも軽トラに10t載せたがるタイプですか?やっぱりトラウマで目が曇っているとしか。
Re:64bit版Windowsのタコな仕様はItaniumのせい (スコア:0)
80286は?
それこそ80286でせめてセグメントサイズ1MBにできればよかったんですが。
別にハイエンドでもない68000は16MBリニアアクセスできましたし。
Re: (スコア:0)
68000はハイエンドですね。6809がミッドレンジです。
Re: (スコア:0)
現在は「無理だった」と考えています。
まず、セグメント内のアドレッシングが16bitで足りなくなります。
となると、命令セットを作り直しですね。
分岐命令やデータアクセス関係のアドレス指定はビット数の拡張が必要。
インデックスレジスタの幅も拡張しないといけないし、その拡張した17bit以上の
幅を持つレジスタに一発で値をセットできる命令も必要でしょう。
(8086のMOV命令は16bitデータまでしか転送できない)
もともと286はリング保護のプロテクトモードを拡張するためだけに作られたような
CPUですから、基本の命令に手を入れるのはやっぱり386を待つ必要があったでしょう。