- ベストアンサー
CPUのbit数を調べるコマンド
Solaris8なんですが、CPUが32bitか64bitか調べたいのですが、そういう情報が書かれているファイルもしくはコマンドってありますか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.3の方が書かれているように64ビットCPUで32ビット環境をインストールしていないという前提なら、isainfoコマンドでどっちの環境(32/64ビット)か分かります。 ○isainfoコマンド実行例 ・32ビット環境 % isainfo -v 32-bit sparc applications % isainfo -v 32-bit i386 applications ・64ビット環境 % isainfo -v 64-bit sparcv9 applications 32-bit sparc applications あと、「psrinfo -v」でCPUの情報が表示されたはずですが、32ビットか64ビットかまでは表示されなかったと思います。 -------8<-------8<-------8<-------8< No.1&No.2 >main() { >printf( "%d\n", sizeof( int ) * 8 ) ; >} intは、常に4バイト(32ビット)だと思います。 32ビット環境がILP32で、64ビット環境がLP64だったはず。
その他の回答 (5)
- Lean
- ベストアンサー率72% (435/603)
補足しておきます。 >>main() { >>printf( "%d\n", sizeof( int ) * 8 ) ; >>} > >intは、常に4バイト(32ビット)だと思います。 という書き方は語弊があるかもしれませんね。 CPUのビット数=intという時期もありましたので、No.1の方はそのためにその方法をお書きになったと思いますが、現在それが当てはまらなくなって来ているという事ですね。
お礼
なるほど、そういう経緯があったんですか。補足ありがとうございました。
- Lean
- ベストアンサー率72% (435/603)
>ILP32かLP64というのは、なにによってきまるんでしょうか? CPUのビット数も関係してきますが、その環境(というよりはCコンパイラと言ったほうがいいのかな)が、どのデータモデル(LP32、ILP32、ILP64等) を実装しているかによります。 UNIX系OSの場合、32ビット環境だとint(I)、long(L)、Pointer(P)が32ビットのILP32が、64ビット環境だとlong(L)、Pointer(P)が64ビットのLP64が一般的というか事実上の業界標準だと思います。 データモデルの種類と各データモデルの型精度については、英語ですが参考URLのページでも参照してみて下さい。 ちなみにSunは、64-bitコンピューティングのFAQで下記のように書いてますね。 ○64-bitコンピューティング FAQ http://jp.sun.com/products/software/solaris/faq/64bit.html -------8<-------8<-------8<-------8<-------8<-------8<------- 4. Q. Solaris オペレーティングシステムはどのようなデータ・モデルを使用していますか。 A. LP64 は事実上の業界標準です。L はロング (Long) を表し、P はポインタ (Pointer) を表します。両方とも 64 ビットですが、int は 32 ビットです。 -------8<-------8<-------8<-------8<-------8<-------8<-------
お礼
ありがとうございます。isainfoにより64bit環境ということが分かっていますが、つまり、どちらにしてもintは32bitということなんですね。
- 10gate
- ベストアンサー率42% (50/117)
こんにちは。 コマンド等で、物理的な石のビット数を知るのは難しいような・・。 仮に64bitのCPUでもSolarisをインストールする際に32bitモードでインストールしたら、OSから実際は64bitだと知る事はできないように思います。 64bitのCPUで32bitモードでインストールするような事はしていないという前提なら uname -a で表示されませんでしょうか(手元に今Solarisがないのであいまいで恐縮です)。
お礼
>仮に64bitのCPUでもSolarisをインストールする際に32bitモードでインストールしたら、OSから実際は64bitだと知る事はできないように思います。 そうなんですか、難しいですね。 uname -aでは32 64といった数字は確認できませんでした。
失礼しました・・ main() { printf( "%d\n", sizeof( int ) * 8 ) ; } ですね。(^^; これを、bits.c というファイルに作って、 gcc -o bits bits.c これで、ビット数を調べるコマンドのできあがりです。
コマンドとしてあるかな~・・と、調べてみたのですが・・ 調べるよりおそらく・・ main() { printf( "%d\n", sizeof( int ) ) ; } これをccでコンパイルしたほうが早いです。。(^^;
お礼
なるほど、そういうやり方があったんですね。ありがとうございました。
お礼
ありがとうございます。 % isainfo -v で64bitということが確認できました。 >intは、常に4バイト(32ビット)だと思います。 32ビット環境がILP32で、64ビット環境がLP64だったはず。 確かに上記プログラム、コンパイルして実行すると32と出ました。ILP32かLP64というのは、なにによってきまるんでしょうか?