Mixing/Migrating pointer size and data length
新城@筑波大学情報です。こんにちは。
In article <050105080210.M0117702@ns.kobe1995.net>
kaz@kobe1995.net (NAKAMURA Kazushi) writes:
> 32/64bitの話は、CPU/OS, Data/Address幅を混同してるのと、特定の
> (IA32/64)アーキやOSと、そのセールストークに依存した話を混ぜる
> のでややこしくなってると思います。
はい。今までの議論だと、32bit/64bit では、アーキテクチャはあ
んまり関係なくて、本質的なものは、言語レベルのポインタの長さ
データの長さを混在させたり、変更したりすることの難しさの方が
大事だということが、だいたい分かってきたんじゃないですか。
アプリケーションもOSも、ソフトウェアだからプログラミング言
語で書きます。今は、アセンブリ言語で書くのはあんまりなにいか
ら、C言語のレベルで考えます。他の言語でもいいですが、C言語
に逆コンパイルして考えます。
難しいのは、ソフトウェア(アプリケーションとOSの両方)で、
C言語のレベルの記述の int とか long とか違う時でもちゃんと
動くプログラムを作るのは、けっこう難しいということです。
int x とか気軽に書くと、終ってしまうわけですが、そういうプロ
グラムが今までかなり生産されてきていて、それをどうしたらいい
かということです。
あと、もう少し難しいのが、アプリケーションとOSで、ポインタ
の長さが違う時どうしようかとか、複数の種類のアプリケーション
を扱う時、OSをどうしようかとか、そういう話です。
> 個人的意見を言うと、32bit CPUとか64bit CPUという区別は、ノイマン
> ボトルネックの幅で定義出来ますが、32bit OSとか64 bit OSなんて概念は
> 存在しない、です。せいぜい、32bit CPUで動くOS, 64bit CPUで動くOS
> くらいの区別でしょう。
上の問題の面白さが見えない人とか問題とは思わない人もいるので
しょう。
> IAの場合、32bit「モード」と64bit「モード」は
> 全然違う動作するので、それぞれのモードに合わせてOSを用意しなきゃ
> いけないだけでしょう。
OSを2つ用意するだと、不十分です。OSは1つにしたいわけです。
> MIPS環境だと、ずっと昔から32bitも64bitも、恐らく128bitも混在で動きます。
> pure 64bit OSならAlpha用の環境が該当するのでは?何しろ32bitアプリが
> 存在しませんし。
pure だと、あんまり面白くないわけです。
> 昔を思い出せば、16bit環境と呼んでいたi8086もアドレス空間は一応20bit
> 有りましたし、i80286は24bitモードも有りました。68kは最初からアドレス
> 空間は24bitリニアに有りましたし。
ハードウェアのバスの幅を増やしていくのは、気楽でいいですね。
> MIPSは今更だけど、良く出来てたなぁ。SUNもUltraに移行する時、結構ゴタゴタ
> したのに…。
その「ゴダゴダ」の中身を議論するのが楽しいわけです。
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735