タグ

gccに関するpaellaのブックマーク (11)

  • maloader - a mach-o loader for linux - 兼雑記

    https://github.com/shinh/maloader Linux で動く Mach-O loader を書いています。何ができるかというと、 Mac のバイナリが Linux でそれなりに動きます。今のところ、 gcc 、 otool 、 nm などの、いくつかのコマンドラインツールと、その gcc が生成した簡単なプログラムなんかが動きます。 Safari とか iTunes とかはもちろん動きませんし、動くようにしたいとも思ってないです。 仕組みとしては、引数に与えられた Mach-O バイナリを適当に読み込んで、指定された通りに mmap して、未定義なシンボルは linux の世界から探してきて再配置して、でエントリポイントに jmp する、と。まぁローダの説明そのまんまという感じです。 ローダはまぁ Mach-O のフォーマットが mach-o/loader.h か

    maloader - a mach-o loader for linux - 兼雑記
    paella
    paella 2011/03/17
    Linuxで動くMach-O loader。Macのバイナリ(gcc/otool/nmなどいくつかのコマンドラインツールと、gccが生成した簡単なプログラム)が Linux でそれなりに動く、とのこと。へー!
  • 続・GCC拡張を使ったusing | 株式会社きじねこ

    以前、「GCC拡張を使ったusing」という記事を書きました。あれから2ヶ月半ほど経ちましたが、今になって思うと、肝心なGCC拡張を忘れていたことに気付きます。"cleanup"がそれです。 "cleanup"は__attribute__で関数を指定するGCC拡張です。"cleanup"を指定した自動変数は、その生存期間が終わる時点で、指定した関数が呼び出されます。つまり、デストラクタと同じことができるわけです。 話を簡単にするために、後始末としてはfreeでメモリを解放する場合に限定して考えることにします。 #include <stdio.h> #include <stdlib.h> #include <string.h> void cleanup(void *p) { free(*(void**)p); puts(__func__); } #define using(decl) \ f

    paella
    paella 2011/01/14
    「__attribute__((cleanup(関数ポインタ))) 変数宣言」として書くと、変数のスコープから抜けたときに自動的に関数ポインタで示す関数を呼んでくれる。簡易的なデストラクタ。
  • GCC 4.6 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF)

    GCC 4.6 Release Series Changes, New Features, and Fixes Caveats The options -b <machine> and -V <version> have been removed because they were unreliable. Instead, users should directly run <machine>-gcc when cross-compiling, or <machine>-gcc-<version> to run a different version of gcc. GCC now has stricter checks for invalid command-line options. In particular, when gcc was called to link object f

    paella
    paella 2011/01/12
    GCC4.6からObjective-C 2.0の色々がけっこう使えるようになったというChangelog
  • http://opensource.apple.com/source/gcc/gcc-5664/README.Apple

    paella
    paella 2011/01/12
    Appleではビルドでこんな設定をしていますよ、という説明。build以下にどんなふうに配置するかといった設定
  • Compiler Benchmarks Of GCC, LLVM-GCC, DragonEgg, Clang - Phoronix

    Compiler Benchmarks Of GCC, LLVM-GCC, DragonEgg, Clang Written by Michael Larabel in Software on 8 November 2010 at 05:00 AM EST. Page 1 of 7. 62 Comments. LLVM 2.8 was released last month with the Clang compiler having feature-complete C++ support, enhancements to the DragonEgg GCC plug-in, a near feature-complete alternative to libstdc++, a drop-in system assembler, ARM code-generation improveme

    paella
    paella 2010/11/10
    LLVM/Clangや各種バージョンのGCCなど、色々なコンパイラを使って小パイルのベンチマークを計測したまとめ記事。LLVM/Clangが絶対ではなかったり、gccの古いものの方が速いケースもあったりと面白い。
  • 英国正版365官方网站|中文-Best Casino No.1

    paella
    paella 2010/04/15
    GCCのコード解析器を利用した開発援助ツール、とのこと。スクリーンショットを見る限り、かなり便利そう。今後の展開に期待。
  • Coroutines in C

    by Simon Tatham [Coroutines trilogy: C preprocessor | C++20 native | general philosophy ] Introduction Structuring a large program is always a difficult job. One of the particular problems that often comes up is this: if you have a piece of code producing data, and another piece of code consuming it, which should be the caller and which should be the callee? Here is a very simple piece of run-leng

    paella
    paella 2010/01/07
    トリッキーさという意味でCマクロ30行でのコルーチン
  • 最新Cコンパイラーの最適化事情 - Radium Software

    State of the art C compiler optimization tricks, Felix von Leitner, Linux Kongress 2009. 最近のCコンパイラーの最適化能力についてまとめたプレゼンテーション。定数の扱いやインライン展開などの基的な項目から始まって,分岐の削除やベクトル化, SIMD 化など,最新のコンパイラーに搭載されている様々な機能について調べている。 この手の分岐の削除はほとんどのコンパイラーで有効らしい。 ベクトル化については gcc がだいぶ頑張っている印象。 「gcc は全プラットフォームにおいてビデオコーデックプログラマーより賢い」 これらの最適化が実際のコードでどのように機能するか気になって逆アセンブリコードを覗いてみる人も少なくないと思うけれど,それを代わりにやってくれた感じだ。この手の話題に興味がある人ならば,目を通

    最新Cコンパイラーの最適化事情 - Radium Software
    paella
    paella 2009/12/28
    考える元。結構賢いことをやっているよ、という記事の紹介。本文は後で読もう.
  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

    今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
    paella
    paella 2009/11/09
    プリプロセッサだけでフィボナッチ数列を求めている素敵なマクロ。これはすごい。このマクロならズルではないはず!
  • Predefined gcc #defines (Nat!'s Web Journal)

    paella
    paella 2009/09/30
    事前定義されたdefineマクロをチェックできるコマンド「echo | gcc -dM -E -x c - | sort」これは便利。
  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

    paella
    paella 2009/08/06
    GCC(4.3)とVC(2008SP1)で移植性を意識する時に気を付ける点がまとめてある。良記事。
  • 1