読者です 読者をやめる 読者になる 読者になる

GCC 4.7の最適化オプション比較表

gcc

GCCの各オプティマイズレベルで有効になる最適化を調べる - Life is very short の GCC 4.7版。"-Ofast"を追加しました。"-Ofast"は規約を一部 無視した最適化を行うようです。"-O3"より高速になるよう意図 されています。 なお GCC 4.8では "-Og"という最適…

GCCの最適化オプションは "-O3"までしかない

gcc

ここ十数年ぐらいの GCCの最適化は "-O3"までありません。 稀に "-O3"より大きい、"-O4"等を見るけど、それは結局 "-O3"に されてしまいます。 追記 なお最高速度のオプションは "-Ofast"です。ただこれは規約に 沿わない形での最適化も含まれます。大部分は…

GCC 4.7.1を構築する(sh編)

gcc

shのクロス開発環境を作ります。ほとんど v850と同じです事前に必要なことは 準備編を参照してください Binutils % cd binutils-2.22 % mkdir -p build_sh && cd build_sh % ../configure --target=sh-linux-elf \ --prefix=/home/syohei/local/sh --disable…

GCC 4.7.1を構築する(v850編)

gcc

V850のクロス開発環境を作ります。事前に必要なことは 準備編を参照してください Binutils % cd binutils-2.22 % mkdir -p build_v850 && cd build_v850 % ../configure --target=v850-linux-elf \ --prefix=/home/syohei/local/v850 --disable-nls % make %…

GCC 4.7.1を構築する(準備編)

gcc

GCC 4.7.1を構築するための手順を示します。 今回は準備編です。次回以降特定のアーキテクチャ向けの手順を示します。 必要となるライブラリ GMP MPFR MPC PPL CLOOG GMP, MPFR, MPCは必須です. PPL, CLOOGは最適化のためのもので オプショナルです。 各ソフ…

H8300用クロスコンパイラの作成

コンパイラテストツールが 16bitコンパイラでも使用できるか ということを確かめたかったので作って見ました。 基本的にその他のクロスコンパイラと同様です。 以下とほとんど同じです。 v850用クロス開発環境の構築 - Life is very short ビルド環境 Ubuntu…

attribute packedに関するコード生成

各 OSの IPヘッダ構造体を見ていると, attribute packedを使っているのと 使っていないのがあってなんでだ、って思って生成するコードを調べてみた。 attribute packedをつけているのは NetBSD, FreeBSD. つけてないのが Linux, OpenBSDです. 各 OSの定義 Fr…

GCCの各オプティマイズレベルで有効になる最適化を調べる

gcc

GCC 4.4ぐらいから見たいなのですが、-Qオプションを使うと、 最適化等でどのオプションが有効になるかがわかるみたいです。 具体的には以下のようなコマンドです。 % gcc -O2 -Q --help=optimize # 個々のオプションについて 'enabled' or 'disabled'が確認…

MIPSクロスコンパイラで実行ファイルの作成

MIPSのクロスコンパイラで実行ファイルの作成ってどうやるか 学生時代からわからなかったんですけど、ようやくわかったのでそのメモ。結論からいうとリンカスクリプトを指定するだけで良いようです。 以下のようなプログラムをコンパイルしてみます。 準備 G…

GCC 4.6 MIPS クロスコンパイラを作る

4.6でMIPSクロスコンパイラを作ってみたので、そのメモです。 環境 Ubuntu 10.10 x64 GCC 4.4.5 バージョン Binutils - 2.21 GCC - 4.6.0 RC newlib - 1.18.0 GDB - 7.2 Binutils (追記) export PATHを追加 % cd binutils-2.21 % mkdir build_mips && cd bui…

GCC-4.6の stack-usageを使ってみた

gcc

GCC 4.6 RCが 3月14日に出ました。なんでもうすぐ正式版も出るかと 思います。Changlogを見ていると気になる機能がありました。それが stack-usage. 関数ごとのスタックの使用量が確認できるというものです。 これは Adaだとだいぶ前から実装されていたんで…

GCC 4.5.2をビルドする

なんかビルドできないって思ってたけど、gcc-coreでなく全部を含んだ gccを 使ったらすんなりいった。ちゃんと確かめないといけないんですが、 とりあえず成功した際の手順を示します。 環境 Ubuntu 10.10 x64 事前準備 事前準備がもろもろ必要になるのです…

GCC 4.5.1をビルドする

gcc

GCC 4.5.1をビルドしたのでそのときのメモ。 環境は X86_64 Ubuntu 10.10, gcc-4.4.5です。 ビルドに当たり必要となるソフトウェア。詳しいいことはここにあります。 GMP(5.0.1) MPFR(3.0.0) MPC(0.8.2) PPL(0.11) cloog-ppl(0.15.10) それぞれのインストー…

GCC 4.3の新機能 2進数表記

c gcc

GCC4.3のChangelogを見ていたら、 GCC4.3から 2進数表記が対応したみたい。 大学のプログラミングの授業ではこんな機能が あったらいいな〜って思っていたけど、今になると そこまでうれしくないかな。 #include <stdio.h> int main(void) { printf("%d\n", 0b1111); </stdio.h>…

GCCの4.3の新機能 __COUNTER__マクロ

c gcc

もう一つ気になった機能で __COUNTER__マクロがあります。 これは呼ばれるたびに 0から1ずつインクリメントしていく というものです。 利用方法がよくわからないけど、便利なのかな? マクロって結局実行前に展開されてしまうからね。 そこが難しいところで…