タグ

gccに関するrti7743のブックマーク (10)

  • ウノウラボ by Zynga Japan: 30分でわかる PHP Extensionの作り方を学べる記事をかいたよー \(^o^)/


    12@chobi_e 30%  PHP Extension  PHPExtensionklabyoya rskyPHPChello world PHPC/MigemoPHP C/Migemo C/Migemo
  • ARMソフトのエミュレーション環境構築

    最近は組込みの仕事をしているとARMをターゲットとした開発をする機会が多いと 思いますが、家で勉強したくてもボード等を用意して環境が整えるのはなかなか 難しいですね。。 と言うわけで、私はこの前VirtualBoxにインストールしたGentoo Linux上にクロス コンパイル & エミュレーション環境を作って勉強することにしましたw 以下、構築手順の覚書です。 1 CPUエミュレータ QEMUのインストール シェルからemerge qemu、と打ってQEMUをインストールします。 安定版の0.9.1はgcc version 4ではコンパイルできず面倒なのでマスクをはずして 0.11.1をインストールしてしまいました。 2 クロスコンパイル環境の構築 まず、crossdevをインストールします。 emerge crossdev 次に/opt/crossdevというディレクトリを作成し、/e

  • g++ exception handling - memologue

    Code Project という有名サイトに、VC++の例外処理方法に関する記事があります (http://www.codeproject.com/cpp/Exceptionhandler.asp) が、そこにg++の例外処理方法を解説したコメントがありました。 ざっくりと次のような事を言っています(翻訳してるわけではないので詳しくは英文読んでください)。 g++は、VC++とはちょっと違うやりかたで例外処理を実装している。g++の場合、実際に例外がthrowされない限りは、try/throw/catchを使ったコードを書いてもランタイムのコストはかからない。 foo()がbar()を呼んでいて、bar()が例外を投げるとせよ。このとき、foo()はスタックに戻りアドレス*1を置いてからbar()を呼ぶ。この戻りアドレスを仮にXとする。 このときコンパイラは、 (X, 掃除コードのアドレス

    g++ exception handling - memologue
  • https://blog.cryolite.net/entry/20100126/p1

  • やりなおしC言語 « ku


    C使10使 Windows AllocatePoolWithTag( IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag ); () PoolTypePagedPool/NonPagedPoolAllocate
    rti7743
    rti7743 2010/03/13
  • gccにおけるatomic操作命令の個別関数

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

  • 仮想関数テーブルを出力するには? - Seasons.NET

    gccのオプションには、-fdump-class-hierarchyというオプションがあり 各クラスの階層構造と仮想関数テーブルのレイアウトの表現をファイルに ダンプします。ファイル名は、ソースファイル名に .class を追加して作成されます。 -options 形式が使用されるなら、options は -fdump-treeと解説されています。 class Hoge { public: virtual void func(){} }; int main() { return 0; } をビルドすると、main.cpp.t01.class というファイルが作成され、中に Vtable for Hoge Hoge::_ZTV4Hoge: 3u entries 0 (int (*)(...))0 4 (int (*)(...))(& _ZTI4Hoge) 8 Hoge::func Class

    仮想関数テーブルを出力するには? - Seasons.NET
  • アセンブラで遊ぶ時に便利なgdb設定 - memologue

    アセンブラで遊ぶ時に便利な ~/.gdbinit を紹介します。まず ~/.gdbinit を次のように記述してください。 # # ~/.gdbinit # # .so を shlib コマンドで手動で読み込む # set auto-solib-add 0 # スレッド生成時のSIG32でブレークしない handle SIG32 nostop # ニモニック構文の選択 # set disassembly-flavor intel set disassembly-flavor att # フラグレジスタの可読化関数 define pf printf "eflags: %s%s%s%s%s%s%s%s%s (= 0x%08u)\n",\ $eflags & 2048 ? "O":"-",\ $eflags & 1024 ? "D":"-",\ $eflags & 512 ? "I":"-",\

    アセンブラで遊ぶ時に便利なgdb設定 - memologue
    rti7743
    rti7743 2010/01/11
    混合モード
  • gcc+gdbによるプログラムのデバッグ 第1回 ステップ実行、変数の操作、ブレークポイント

    しかし、ブレークポイントという機能はデバッガの手助けなしでは実現できません。 ブレークポイントとはプログラムの強制一時停止を行うポイントで、実行中のプログラムがブレークポイントに遭遇するとプログラムは一時停止され、デバッガによるプログラムへの介入を行えるようになります。 ブレークポイントは次のような場所に設定できます。 指定した行番号のプログラムを実行しようとする瞬間 関数を呼び出した瞬間 その他、C++などでは「例外が発生した瞬間」などにもブレークポイントを設定することができます。 行番号ブレーク ブレークポイントとしてよく使用されるのは、「プログラムの特定の位置」です。 例として、bubblesort.cプログラムのsort関数内で、隣り合う二つの要素を比較している箇所にブレークポイントを設定してみます。 25|/* bubble sort */ 26|void sort(int *a

  • ホワット・ア・ワンダフル・ワールド 短い x86 機械語命令を探す時には gcc が便利な気がする


     ? anarchy golf ()  gcc  -dp  Using the GNU Compiler Collection (GCC) 3.9 Options for Debugging Your Program or GCC -dp Annotate the assembler output with a comment indicating which pattern and alternative was used. The length of each instruction is also p
  • 1