人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Unix/Linuxにおける32bitバイナリと64bitバイナリの構造的な差異を教えてください。
具体的には、リンクするライブラリ、システムコール、メモリ空間、C言語intの幅などを
整理して理解したいです。


●質問者: my_redo_log
●カテゴリ:コンピュータ インターネット
✍キーワード:C言語 Linux UNIX システムコール バイナリ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tera-p
●70ポイント ベストアンサー

http://www.valinux.co.jp/contents/tech/techlib/eos/linux64/linux... が良くまとまっていると思いますが,64bit バイナリは 64bit CPU の特長である 64bit レジスタや 64bit メモリアドレス空間を利用した(正確にはこれらを利用できるモードで動作する)プログラム,32bit バイナリはそれらを利用しないプログラムになります.

C でプログラミングするときの最も注意すべき違いは,long int と void* の幅が 64bit になるところです(LP64 データモデルの場合;ちなみに LP64 では int 幅は 32bit のままで変わりません).void* が 64bit になっていることからわかるように,64bit アドレスで表現されるメモリ空間をリニアに扱うことができるようになります.また,ライブラリは 32bit 用,64bit 用が別々に提供されることになります.

◎質問者からの返答

URL確認させていただきました。ご回答ありがとうございます。

(自身のOSとシステムコールに対する理解不足のため、わからないのかもしれませんが)libcだけではなく、システムコールとの対応関係があればありがたいのですが・・・。


2 ● redwing1
●0ポイント

ライブラリがまったく違ったと思います。移行期には両方入れてましたよね。

◎質問者からの返答

私の理解の程度も、「ライブラリの指定が違ったなぁ」程度です。

ですので、構造的にすっきり理解したいのです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ