- 締切済み
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) わかりにくい質問だとは思いますが、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- salsberry
- ベストアンサー率69% (495/711)
移植先のRed Hatはx86で動作するものですか? それともそれ以外? もしx86ならばアラインメントに寛容なので、そもそもそのようなコンパイルオプションは不要かもしれません。
- wormhole
- ベストアンサー率28% (1626/5665)
一応CPU依存で似たような事ができるオプションはありますが 本当にそれが必要かどうか、必要であるなら必要な箇所を特定して __attribute__((aligned()))や__attribute__((packed))を使用された方がよいのではないでしょうか。
お礼
なるほど! 一応類似オプションは存在するんですね! やはり、ソースをしっかりと見返す必要がありそうですね。。。 量が多くて少し敬遠していたんですけど、これから頑張って調べてみたいと思います! 回答ありがとうございました!
お礼
回答ありがとうございます。 >移植先のRed Hatはx86で動作するものですか? それともそれ以外? はい、x86で動作するものに移植をしています。 >もしx86ならばアラインメントに寛容なので、そもそもそのようなコンパイルオプションは不要かもしれません。 あ、そうなんですね! 検索をかけても出てこないのは、特別付加する必要が無かったからなんですね。 まだまだ知らないことが多いですね。。。 勉強になりました!ありがとうございます!