ページ 1 / 1
基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??
Posted: 2012年1月16日(月) 10:19
by よねかわ
基本的な質問で申し訳ありません
一般論として、
基本int型のサイズ(byte数)はOSのdata bus のサイズと同じと考えても宜しいでしょうか。
例えば、64bitのwindows版のC言語中のintは64bitであるとか、、、
宜しくお願いします。
Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??
Posted: 2012年1月16日(月) 10:25
by beatle
intのサイズは64ビットOSであっても32ビットになったりします.
intのサイズを決めるのはコンパイラです.
Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??
Posted: 2012年1月16日(月) 10:26
by beatle
ああ,それから,よねかわさんは
「int型のサイズ(byte数)」
と書いているにも関わらず,その後に
「64bitのwindows版のC言語中のintは64bit」
などと書いていますが,8bits=1byteとは限らないためご注意を.
Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??
Posted: 2012年1月16日(月) 10:31
by たかぎ
OSのdata busというのがよくわかりませんが...
基本的には、CPUのアキュムレータまたは汎用レジスタのサイズと同じだと思います。
ただ、本来であれば64ビットにすべきだけれど、後方互換性のために32ビットにしている場合も多々あります。
実際、64ビットのWindowsでは、少なくともよく使われている処理系については、int型は64ビットではなく32ビットです。
MacOSやLinuxでも同じです。
ローエンドの機種でも同様の状況があります。
例えば、H8/300HやH8Sの汎用レジスタは32ビットですが、ルネサスの純正コンパイラではint型は16ビットになっています。
なお、GCCの場合は、16ビットと32ビットをコンパイルオプションで選択できるようになっています。
ちなみに、8ビットのCPUで、アキュムレータが8ビットしかないような場合でも、int型は16ビットになります。
なぜなら、int型は少なくとも-32767~+32767の範囲を表現できなければならないからです。
ただし、CLike言語の類や非標準処理系の場合はこの限りではありません。
Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??
Posted: 2012年1月16日(月) 10:33
by softya(ソフト屋)
VC++のx64の場合はintは32bitですね。
なのでintが64bitになるかはコンパイラとOSモデル次第と言った所でしょうか。
「64ビット - Wikipedia」
http://ja.wikipedia.org/wiki/64%E3%83%9 ... 7.E3.83.AB
[補足]誤解されそうな書き方なので補足。コンパイル時にint型は何bitか決まってしまうのでOSが64bitを強制すると上手く動かないことも考えられます。なので従来の仕様に合わせられる所は合わせておいた方が無難ってこともあるでしょう。
それと別の方向から考えるとOSの仕様にコンパイラの仕様を合わせるしか無いという事情もあります。逆にOSを作るのはC/C++のコンパイラ言語ですからOSの仕様を決めるのはコンパイラの仕様ってことにもなります。卵が先か鶏が先かって話なんですけどね。
Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??
Posted: 2012年1月16日(月) 14:14
by よねかわ
みなさん
良くわかりました。
ほんとうにありがとうございました。
これからも宜しく願い致します。