タグ

*Cに関するyamadarのブックマーク (6)

  • 表紙 - 本物のC

    このサイトは「物の C 言語」について学習する機会の提供を目的としています。 「物の」とはつまり、 標準規格(仕様)が C 言語をどういうものとして定めているか C プログラムが実際に CPU をどう動かすか という二つの意味合いに於いてです。 どうも巷間にはその辺りを気にせず何となくで書かれた資料が多い様なので、このサイトにより少しでも世界が最適化される事を期待します。 権利について 当然ですがこのサイト全体は著作権法により保護されています。法と良心に則って御利用下さい。 連絡はcontact<アット>real-c.infoまで。

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • C言語の現代化を目指すC2

    AI、ML、データエンジニアリングInfoQトレンドレポート-2023年9月 今回のポッドキャストでは、InfoQ編集部のメンバーとInfoQの友人たちが、毎年恒例のトレンドレポート作成のプロセスの一環として、AI、ML、データエンジニアリングの領域における現在のトレンドについて議論する。これらのレポートは、InfoQの読者に注目すべきトピックのハイレベルな概要を提供し、また編集チームが革新的な技術に焦点を当てるのに役立つ。InfoQ.comで閲覧可能なレポートとトレンドグ...

    C言語の現代化を目指すC2
    yamadar
    yamadar 2018/03/14
    ウォッチしよう
  • i++ と ++i、++i の方が高速という都市伝説を解明 - satosystemsの日記

    昔、ある時、ふと気がついた。 int i; for (i = 0; i < 10; i++) { } for (i = 0; i < 10; ++i) { } 同じ動作をする for ループなんだけど、i++ と ++i の部分で、i++ の方が処理に無駄がある(下の値とインクリメントした値の両方を保持しなきゃならない)から性能面で劣っていないか、と。 結構ずーっと気になっていたんだけど、腰を上げて確認してみたら、gcc ではどちらも同じだった。以下は for ループ内のインクリメント部分の抜粋 movl _i, %eax /* i を eax に読み込み */ addl $1, %eax /* 1 を eax に足し込み */ movl %eax, _i /* eax を i に戻す */ インクリメントの部分は i++ でも ++i でもこのようになっていて、副作用がないので最小のコー

    i++ と ++i、++i の方が高速という都市伝説を解明 - satosystemsの日記
  • C言語分かってなかった (I Do Not Know C) - Qiita

    Dmitri Gribenko氏によるBlog記事 "I Do Not Know C" より訳出。原文および訳文のライセンスは CC BY-SA 3.0 に従う。 この記事の目的は、皆に(とくにCプログラマに)「C言語分かってなかった」と言わせることです。 C言語の死角は思っているよりも身近にあり、よくある単純なコードですら 未定義動作(undefined behavior) を含む可能性があると示したいと思います。 記事は質問に対する回答の形をとります。全ての例示コードは別々のファイルに分かれていると考えてください。 (訳注:Qiita/Markdown表現の制約から、読中ネタバレ防止のため文章順序を変更しています。前半には質問のみを、後半には質問と回答の対を訳出しました。) 質問編 1.

    C言語分かってなかった (I Do Not Know C) - Qiita
  • Cコンパイラをスクラッチから開発してみた(日記)

    以前に8ccというCコンパイラをゼロからひとりで開発していたときのログです。40日でセルフコンパイルできるところまで到達しています。日付はすべて2012年です。コードとヒストリはすべてGitHubで見れます。 3月4日 というわけでコンパイラを作っているわけだけど、1000行くらい書いたらそれなりに動き始めてきた。こんなのも動くし: int a = 1; a + 2; // => 3 こういうのも通る。 int a = 61; int *b = &a; *b; // => 61 文字列は文字の配列として扱っていて、配列をポインタに成り下げる振る舞いも実装しているので、こういうのも通る。関数呼び出しもある。 char *c= "ab" + 1; printf("%c", *c); // => b 前回もこのあたりはがんばって実装したからここまで作るのはわりと単純作業かも。二回目だから配列とか

    Cコンパイラをスクラッチから開発してみた(日記)
  • 1