タグ

gccに関するsiro_umaのブックマーク (4)

  • 浮動小数点演算ではまった話 - bkブログ

    浮動小数点演算ではまった話 浮動小数点演算のありがちな問題ではまりました。 いろいろ調べているうちに x86 特有のちょっとおもしろい 現象に遭遇したので紹介したいと思います。 パーセンテージの計算 簡単な C のプログラムでパーセンテージを計算しようと思い、 次のようなコードを書きました。 int x, y; ... int a = (double)x / y * 100; int a = x * 100 / y としないのは、 x が大きい場合に x * 100 が オーバーフローを起こす (INT_MAX を越える) ためです。 このコードは一見、期待通りに動いていたのですが、 しばらく使っていると、手元の環境では x = 53, y = 100 のときに a は 53 ではなく 52 になることに気づきました。 これは次の理由によります。 式の最初の (double)53 / 10

  • Mac OS X開発におけるGNU Compiler Collection

    稿では、フリーソフトウェア財団のGNU Compiler Collection(GCC)とMac OS Xにおけるその使い方について概説します。GCCはフリーソフトウェアプロジェクトであり、UNIXや他のプラットホーム向けのソフトウェアを開発するために何年も使われています。アップルの開発ツールであるXcode(および以前のProject Builder)では、ソースコードから実行可能イメージをビルドするために内部ではGCCを使用しています。GCCとの対であるGNU Debugger(GDB)は、Xcodeデバッガの基盤を構成しています。 ここに示す例は、いくつかの理由でコマンドラインから実行しています。 多くのUNIX開発者がコマンドラインベースのツールを使い慣れています。 コマンドラインツールは、複数のプラットフォーム(UNIXのバリアントなど)で作業を行う開発者に最小公分母を提

  • フリーソフトウェア徹底活用講座(1)

    コンパイラオプションによる自動最適化について解説します. ● -0,-01 このオプションでは基的な最適化を行います. たとえばregisterの不要な移行を行わない,メモリアクセスを減らすためにregisterに値を保存しておくなどの最適化を行います. 最適化を行うと,コンパイルには時間がかかり,大きな関数についてはたくさんのメモリを余計に使います. -0を指定しないと,register宣言した変数しかレジスタに割り当てません. -0を指定することでコードサイズと実行時間を小さくしようとします.また,全機種で-fthread-jumpsと-fdefer-popを有効にします.遅延スロットのある機種では-fdelayed-branchをオンにし,フレームポインタなしでもデバッグをサポートできる機種では-fomit-frame-pointerをオンにします.機種によっては,ほかのオプション

  • le4 parallel programming

    高速化: コンパイラについて C言語のプログラムはたとえばfoo.cといった名前のファイルとして作成す る。gcc (GNU C compiler) でコンパイルして fooという名前の 実行形式ファイル(ユーザプログラム)を得るためには、シェルのコマンドライ ンで: gcc foo.c -o foo と指示すればよい。得られたユーザプログラムを「-a 300」という 引数で実行するには ./foo -a 300 のように指示すればよい。最適化をコンパイラに指示するには: gcc -O2 foo.c -o foo のようにする。(-O2の意味は、info や man などで調べること) 実際にはgccは、Cコンパイラ(プリプロセッサ付)、 アセンブラ、 リンカを用いて、Cプログラムのファイル→[Cコンパイラ]→ アセン ブリ言語プログラムのファイル→[アセンブラ]→オブジェクトファイル→[

  • 1