こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

gccのコマンド行オプションについて

現在仕事で、HP-UX11iからLinuxにC言語プログラムを移行する作業を行っています。

そこで、質問なのですが、HP-UXでは"+unum"というコマンド行オプションがありました。
以下がccのマニュアルに記載されている説明です。

-------------------------------------------------------------------------------
ポインタは固有に境界整列していないデータにアクセスできる。
このオプションを使用することにより、コンパイラが間接参照されたデータにアクセスする方法
が変更できる。
また、このオプションを使用すると、生成されたコードの効率が低下することがある。
numについては次のように指定可能。
 1:シングルバイトの境界整列を想定する。一連のシングルバイトのロードと保管によって
間接参照が実行される。
 2:一連の2バイトのロードと保管によって間接参照が実行される。
 4:一連の4バイトのロードと保管によって間接参照が実行される。
-------------------------------------------------------------------------------

この様に、アラインメントの設定だと思うのですが、"gcc"のオプションで同じ性能を持つものってあるのでしょうか?
ネットなどで調べても出てこないので、もしご存知でしたら、ご教授ください。

OSの環境、gccのバージョンは以下の通りです。

OS:Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
gcc:gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)

わかりにくい質問だとは思いますが、よろしくお願い致します。

投稿日時 - 2011-10-28 14:15:06

QNo.7099196

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

移植先のRed Hatはx86で動作するものですか? それともそれ以外?
もしx86ならばアラインメントに寛容なので、そもそもそのようなコンパイルオプションは不要かもしれません。

投稿日時 - 2011-10-28 22:31:22

お礼

回答ありがとうございます。

>移植先のRed Hatはx86で動作するものですか? それともそれ以外?
はい、x86で動作するものに移植をしています。

>もしx86ならばアラインメントに寛容なので、そもそもそのようなコンパイルオプションは不要かもしれません。
あ、そうなんですね!
検索をかけても出てこないのは、特別付加する必要が無かったからなんですね。
まだまだ知らないことが多いですね。。。
勉強になりました!ありがとうございます!

投稿日時 - 2011-10-31 09:45:32

ANo.1

一応CPU依存で似たような事ができるオプションはありますが
本当にそれが必要かどうか、必要であるなら必要な箇所を特定して
__attribute__((aligned()))や__attribute__((packed))を使用された方がよいのではないでしょうか。

投稿日時 - 2011-10-28 19:42:10

お礼

なるほど!
一応類似オプションは存在するんですね!
やはり、ソースをしっかりと見返す必要がありそうですね。。。
量が多くて少し敬遠していたんですけど、これから頑張って調べてみたいと思います!

回答ありがとうございました!

投稿日時 - 2011-10-31 09:48:56

あなたにオススメの質問